From b4213deec34ab20bbad4f61fa2acd173698f018d Mon Sep 17 00:00:00 2001 From: Noah Meyerhans Date: Sat, 17 Aug 2024 13:26:24 -0400 Subject: [PATCH] Import dovecot_2.3.21.1+dfsg1.orig.tar.gz [dgit import orig dovecot_2.3.21.1+dfsg1.orig.tar.gz] --- AUTHORS | 24 + COPYING | 76 + COPYING.LGPL | 502 + COPYING.MIT | 17 + ChangeLog | 186332 +++++++++++++++ INSTALL | 37 + INSTALL.md | 39 + Makefile.am | 114 + Makefile.in | 1216 + NEWS | 5786 + README | 128 + README.md | 126 + TODO | 370 + aclocal.m4 | 3506 + compile | 348 + config.guess | 1480 + config.h.in | 955 + config.rpath | 684 + config.sub | 1801 + configure | 33846 +++ configure.ac | 983 + depcomp | 791 + doc/Makefile.am | 23 + doc/Makefile.in | 838 + doc/documentation.txt | 130 + doc/dovecot-initd.sh | 79 + doc/dovecot-openssl.cnf | 31 + doc/example-config/Makefile.am | 28 + doc/example-config/Makefile.in | 876 + doc/example-config/README.in | 2 + doc/example-config/conf.d/10-auth.conf | 127 + doc/example-config/conf.d/10-director.conf | 60 + doc/example-config/conf.d/10-logging.conf | 105 + doc/example-config/conf.d/10-mail.conf | 415 + doc/example-config/conf.d/10-master.conf | 133 + doc/example-config/conf.d/10-metrics.conf | 74 + doc/example-config/conf.d/10-ssl.conf | 82 + doc/example-config/conf.d/15-lda.conf | 48 + doc/example-config/conf.d/15-mailboxes.conf | 86 + doc/example-config/conf.d/20-imap.conf | 99 + doc/example-config/conf.d/20-lmtp.conf | 40 + doc/example-config/conf.d/20-pop3.conf | 99 + doc/example-config/conf.d/20-submission.conf | 112 + doc/example-config/conf.d/90-acl.conf | 19 + doc/example-config/conf.d/90-plugin.conf | 11 + doc/example-config/conf.d/90-quota.conf | 83 + doc/example-config/conf.d/Makefile.am | 32 + doc/example-config/conf.d/Makefile.in | 673 + .../conf.d/auth-checkpassword.conf.ext | 21 + doc/example-config/conf.d/auth-deny.conf.ext | 15 + doc/example-config/conf.d/auth-dict.conf.ext | 16 + doc/example-config/conf.d/auth-ldap.conf.ext | 33 + .../conf.d/auth-master.conf.ext | 16 + .../conf.d/auth-passwdfile.conf.ext | 20 + doc/example-config/conf.d/auth-sql.conf.ext | 30 + .../conf.d/auth-static.conf.ext | 24 + .../conf.d/auth-system.conf.ext | 74 + doc/example-config/dovecot-dict-auth.conf.ext | 54 + doc/example-config/dovecot-dict-sql.conf.ext | 23 + doc/example-config/dovecot-ldap.conf.ext | 151 + doc/example-config/dovecot-oauth2.conf.ext | 69 + doc/example-config/dovecot-sql.conf.ext | 144 + doc/example-config/dovecot.conf | 101 + doc/man/Makefile.am | 118 + doc/man/Makefile.in | 825 + doc/man/deliver.1 | 1 + doc/man/doveadm-acl.1.in | 270 + doc/man/doveadm-altmove.1.in | 104 + doc/man/doveadm-auth.1.in | 216 + doc/man/doveadm-backup.1 | 1 + doc/man/doveadm-batch.1.in | 103 + doc/man/doveadm-config.1 | 1 + doc/man/doveadm-copy.1 | 1 + doc/man/doveadm-deduplicate.1.in | 93 + doc/man/doveadm-director.1.in | 283 + doc/man/doveadm-dump.1.in | 93 + doc/man/doveadm-exec.1.in | 47 + doc/man/doveadm-expunge.1.in | 101 + doc/man/doveadm-fetch.1.in | 197 + doc/man/doveadm-flags.1.in | 120 + doc/man/doveadm-force-resync.1.in | 65 + doc/man/doveadm-fs.1.in | 93 + doc/man/doveadm-fts.1.in | 168 + doc/man/doveadm-help.1.in | 36 + doc/man/doveadm-import.1.in | 142 + doc/man/doveadm-index.1.in | 102 + doc/man/doveadm-instance.1.in | 63 + doc/man/doveadm-kick.1.in | 138 + doc/man/doveadm-log.1.in | 122 + doc/man/doveadm-mailbox-cryptokey.1.in | 96 + doc/man/doveadm-mailbox.1.in | 409 + doc/man/doveadm-move.1.in | 169 + doc/man/doveadm-penalty.1.in | 58 + doc/man/doveadm-proxy.1.in | 87 + doc/man/doveadm-purge.1.in | 71 + doc/man/doveadm-pw.1.in | 163 + doc/man/doveadm-quota.1.in | 131 + doc/man/doveadm-rebuild.1.in | 112 + doc/man/doveadm-reload.1 | 1 + doc/man/doveadm-replicator.1.in | 123 + doc/man/doveadm-save.1.in | 66 + doc/man/doveadm-search-query.7 | 428 + doc/man/doveadm-search.1.in | 129 + doc/man/doveadm-stats.1.in | 73 + doc/man/doveadm-stop.1 | 1 + doc/man/doveadm-sync.1.in | 458 + doc/man/doveadm-user.1.in | 165 + doc/man/doveadm-who.1.in | 96 + doc/man/doveadm.1.in | 270 + doc/man/doveconf.1.in | 220 + doc/man/dovecot-lda.1.in | 166 + doc/man/dovecot-sysreport.1.in | 40 + doc/man/dovecot.1.in | 167 + doc/man/dsync.1 | 1 + doc/man/global-options-formatter.inc | 46 + doc/man/global-options.inc | 21 + doc/man/option-A.inc | 27 + doc/man/option-F-file.inc | 15 + doc/man/option-S-socket.inc | 10 + doc/man/option-u-user.inc | 22 + doc/man/reporting-bugs.inc | 6 + doc/man/sed.sh | 38 + doc/mkcert.sh | 40 + doc/securecoding.txt | 142 + doc/solr-config-7.7.0.xml | 289 + doc/solr-schema-7.7.0.xml | 48 + doc/solr-schema.xml | 60 + doc/thread-refs.txt | 223 + doc/wiki/ACL.txt | 258 + doc/wiki/AixPluginsSupport.txt | 141 + doc/wiki/AttachmentIndicator.txt | 31 + doc/wiki/AuthDatabase.CheckPassword.txt | 234 + doc/wiki/AuthDatabase.Dict.txt | 391 + doc/wiki/AuthDatabase.LDAP.AuthBinds.txt | 89 + .../AuthDatabase.LDAP.PasswordLookups.txt | 98 + doc/wiki/AuthDatabase.LDAP.Userdb.txt | 181 + doc/wiki/AuthDatabase.LDAP.txt | 79 + doc/wiki/AuthDatabase.Lua.txt | 293 + doc/wiki/AuthDatabase.Passwd.txt | 53 + doc/wiki/AuthDatabase.PasswdFile.txt | 150 + doc/wiki/AuthDatabase.SQL.txt | 243 + doc/wiki/AuthDatabase.VPopMail.txt | 167 + doc/wiki/AuthDatabase.txt | 19 + doc/wiki/Authentication.Caching.txt | 107 + doc/wiki/Authentication.Kerberos.txt | 229 + doc/wiki/Authentication.MasterUsers.txt | 294 + .../Authentication.Mechanisms.DigestMD5.txt | 80 + doc/wiki/Authentication.Mechanisms.NTLM.txt | 34 + .../Authentication.Mechanisms.Winbind.txt | 35 + doc/wiki/Authentication.Mechanisms.txt | 82 + doc/wiki/Authentication.MultipleDatabases.txt | 112 + doc/wiki/Authentication.PasswordSchemes.txt | 248 + doc/wiki/Authentication.Penalty.txt | 45 + doc/wiki/Authentication.Policy.txt | 240 + doc/wiki/Authentication.RestrictAccess.txt | 85 + doc/wiki/Authentication.txt | 37 + doc/wiki/BasicConfiguration.txt | 157 + doc/wiki/Chrooting.txt | 65 + doc/wiki/Clients.NegativeUIDs.txt | 53 + doc/wiki/Clients.txt | 186 + doc/wiki/CompilingSource.txt | 369 + doc/wiki/ConfigFile.txt | 312 + doc/wiki/Debugging.Authentication.txt | 91 + doc/wiki/Debugging.ProcessTracing.txt | 44 + doc/wiki/Debugging.Rawlog.txt | 148 + doc/wiki/Debugging.Thunderbird.txt | 58 + doc/wiki/Design.Arrays.txt | 109 + doc/wiki/Design.AuthProcess.txt | 365 + doc/wiki/Design.AuthProtocol.txt | 251 + doc/wiki/Design.Buffers.txt | 65 + doc/wiki/Design.Code.txt | 203 + doc/wiki/Design.Dcrypt.txt | 113 + doc/wiki/Design.DoveadmProtocol.HTTP.txt | 113 + doc/wiki/Design.DoveadmProtocol.txt | 95 + doc/wiki/Design.Dsync.txt | 114 + doc/wiki/Design.Events.txt | 264 + doc/wiki/Design.Indexes.Cache.txt | 137 + doc/wiki/Design.Indexes.MailIndexApi.txt | 47 + doc/wiki/Design.Indexes.MainIndex.txt | 284 + doc/wiki/Design.Indexes.TransactionLog.txt | 265 + doc/wiki/Design.Indexes.txt | 70 + doc/wiki/Design.InputStreams.txt | 207 + doc/wiki/Design.Lua.txt | 249 + doc/wiki/Design.MailProcess.txt | 12 + doc/wiki/Design.Memory.txt | 193 + doc/wiki/Design.OutputStreams.txt | 96 + doc/wiki/Design.ParameterForwarding.txt | 65 + doc/wiki/Design.Plugins.txt | 62 + doc/wiki/Design.Processes.txt | 137 + doc/wiki/Design.Storage.ErrorHandling.txt | 63 + doc/wiki/Design.Storage.Mail.txt | 100 + doc/wiki/Design.Storage.MailNamespace.txt | 91 + doc/wiki/Design.Storage.MailStorage.txt | 41 + doc/wiki/Design.Storage.MailUser.txt | 25 + doc/wiki/Design.Storage.Mailbox.Save.txt | 51 + doc/wiki/Design.Storage.Mailbox.Search.txt | 101 + doc/wiki/Design.Storage.Mailbox.Sync.txt | 128 + .../Design.Storage.Mailbox.Transaction.txt | 52 + doc/wiki/Design.Storage.Mailbox.txt | 34 + doc/wiki/Design.Storage.MailboxList.txt | 159 + doc/wiki/Design.Storage.Plugins.txt | 124 + doc/wiki/Design.Strings.txt | 70 + doc/wiki/Design.txt | 66 + doc/wiki/Dict.txt | 45 + doc/wiki/Dictionary.txt | 268 + doc/wiki/Director.txt | 366 + doc/wiki/DomainLost.txt | 60 + doc/wiki/Errors.ChgrpNoPerm.txt | 28 + doc/wiki/Events.txt | 288 + doc/wiki/FindMailLocation.txt | 65 + doc/wiki/FinishBasicConfiguration.txt | 12 + doc/wiki/HAProxy.txt | 90 + doc/wiki/HowTo.AntispamWithSieve.txt | 270 + doc/wiki/HowTo.EximAndDovecotSASL.txt | 54 + doc/wiki/HowTo.ImapcProxy.txt | 174 + doc/wiki/HowTo.PopBSMTPAndDovecot.txt | 363 + doc/wiki/HowTo.PopRelay.txt | 139 + doc/wiki/HowTo.PostfixAndDovecotSASL.txt | 113 + doc/wiki/HowTo.Rootless.txt | 119 + doc/wiki/HowTo.SimpleVirtualInstall.txt | 188 + doc/wiki/HowTo.WriteConfiguration.txt | 56 + doc/wiki/HowTo.txt | 93 + doc/wiki/IMAPServer.Hibernation.txt | 51 + doc/wiki/IMAPServer.txt | 20 + doc/wiki/ImapMetadata.txt | 25 + doc/wiki/IndexFiles.txt | 192 + doc/wiki/LDA.Exim.txt | 163 + doc/wiki/LDA.Indexing.txt | 47 + doc/wiki/LDA.Postfix.txt | 255 + doc/wiki/LDA.Qmail.txt | 31 + doc/wiki/LDA.Sendmail.txt | 105 + doc/wiki/LDA.txt | 298 + doc/wiki/LMTP.Exim.txt | 153 + doc/wiki/LMTP.txt | 131 + doc/wiki/Logging.txt | 181 + doc/wiki/LoginProcess.txt | 126 + doc/wiki/MDA.txt | 17 + doc/wiki/MTA.txt | 54 + doc/wiki/MailLocation.LocalDisk.txt | 50 + doc/wiki/MailLocation.Maildir.txt | 142 + doc/wiki/MailLocation.SharedDisk.txt | 75 + doc/wiki/MailLocation.dbox.txt | 88 + doc/wiki/MailLocation.mbox.txt | 194 + doc/wiki/MailLocation.txt | 343 + doc/wiki/MailboxFormat.Cydir.txt | 20 + doc/wiki/MailboxFormat.MH.txt | 52 + doc/wiki/MailboxFormat.Maildir.txt | 400 + doc/wiki/MailboxFormat.dbox.txt | 251 + doc/wiki/MailboxFormat.imapc.txt | 178 + doc/wiki/MailboxFormat.mailstore.txt | 17 + doc/wiki/MailboxFormat.mbox.txt | 290 + doc/wiki/MailboxFormat.mbx.txt | 24 + doc/wiki/MailboxFormat.txt | 147 + doc/wiki/MailboxSettings.txt | 81 + doc/wiki/Makefile.am | 282 + doc/wiki/Makefile.in | 920 + doc/wiki/MboxChildFolders.txt | 187 + doc/wiki/MboxLocking.txt | 70 + doc/wiki/MboxProblems.txt | 134 + doc/wiki/Migration.BincIMAP.txt | 349 + doc/wiki/Migration.Courier.txt | 87 + doc/wiki/Migration.Cyrus.txt | 81 + doc/wiki/Migration.Dsync.txt | 165 + doc/wiki/Migration.Gmail.txt | 73 + doc/wiki/Migration.Linuxconf.txt | 64 + doc/wiki/Migration.MailFormat.txt | 247 + doc/wiki/Migration.Online.txt | 86 + doc/wiki/Migration.Teapop.txt | 73 + doc/wiki/Migration.UW.txt | 137 + doc/wiki/Migration.Vm-pop3d.txt | 42 + doc/wiki/Migration.txt | 166 + doc/wiki/MissingMailboxes.txt | 54 + doc/wiki/Mountpoints.txt | 55 + doc/wiki/NFS.txt | 161 + doc/wiki/Namespaces.txt | 393 + doc/wiki/OSCompatibility.txt | 51 + doc/wiki/POP3Server.txt | 166 + doc/wiki/PasswordDatabase.BSDAuth.txt | 7 + ...PasswordDatabase.ExtraFields.AllowNets.txt | 43 + .../PasswordDatabase.ExtraFields.Host.txt | 75 + .../PasswordDatabase.ExtraFields.NoDelay.txt | 13 + .../PasswordDatabase.ExtraFields.NoLogin.txt | 22 + .../PasswordDatabase.ExtraFields.Proxy.txt | 307 + .../PasswordDatabase.ExtraFields.User.txt | 27 + doc/wiki/PasswordDatabase.ExtraFields.txt | 105 + doc/wiki/PasswordDatabase.IMAP.txt | 32 + doc/wiki/PasswordDatabase.PAM.txt | 234 + doc/wiki/PasswordDatabase.Shadow.txt | 38 + doc/wiki/PasswordDatabase.Static.txt | 27 + doc/wiki/PasswordDatabase.oauth2.txt | 192 + doc/wiki/PasswordDatabase.txt | 182 + doc/wiki/PerformanceTuning.txt | 69 + doc/wiki/Pigeonhole.Installation.txt | 159 + doc/wiki/Pigeonhole.ManageSieve.Clients.txt | 61 + .../Pigeonhole.ManageSieve.Configuration.txt | 258 + doc/wiki/Pigeonhole.ManageSieve.Install.txt | 2 + ...Pigeonhole.ManageSieve.Troubleshooting.txt | 201 + doc/wiki/Pigeonhole.ManageSieve.txt | 27 + .../Pigeonhole.Sieve.Configuration.Dict.txt | 187 + .../Pigeonhole.Sieve.Configuration.File.txt | 85 + .../Pigeonhole.Sieve.Configuration.LDAP.txt | 131 + doc/wiki/Pigeonhole.Sieve.Configuration.txt | 643 + doc/wiki/Pigeonhole.Sieve.Examples.txt | 423 + .../Pigeonhole.Sieve.Extensions.Duplicate.txt | 47 + ...Pigeonhole.Sieve.Extensions.Editheader.txt | 61 + .../Pigeonhole.Sieve.Extensions.Include.txt | 28 + ...ole.Sieve.Extensions.SpamtestVirustest.txt | 146 + .../Pigeonhole.Sieve.Extensions.Vacation.txt | 106 + .../Pigeonhole.Sieve.Extensions.Variables.txt | 26 + doc/wiki/Pigeonhole.Sieve.Extensions.txt | 14 + doc/wiki/Pigeonhole.Sieve.Plugins.Extdata.txt | 155 + .../Pigeonhole.Sieve.Plugins.Extprograms.txt | 337 + ...geonhole.Sieve.Plugins.IMAPFilterSieve.txt | 49 + .../Pigeonhole.Sieve.Plugins.IMAPSieve.txt | 109 + doc/wiki/Pigeonhole.Sieve.Plugins.Pipe.txt | 187 + doc/wiki/Pigeonhole.Sieve.Plugins.txt | 45 + doc/wiki/Pigeonhole.Sieve.Troubleshooting.txt | 143 + doc/wiki/Pigeonhole.Sieve.Usage.txt | 130 + doc/wiki/Pigeonhole.Sieve.txt | 290 + doc/wiki/Pigeonhole.txt | 45 + doc/wiki/Plugins.Apparmor.txt | 34 + doc/wiki/Plugins.Autocreate.txt | 28 + doc/wiki/Plugins.CharsetAlias.txt | 20 + doc/wiki/Plugins.Compress.txt | 16 + doc/wiki/Plugins.Expire.txt | 354 + doc/wiki/Plugins.FTS.Lucene.txt | 74 + doc/wiki/Plugins.FTS.Solr.txt | 289 + doc/wiki/Plugins.FTS.Squat.txt | 128 + doc/wiki/Plugins.FTS.txt | 102 + doc/wiki/Plugins.LastLogin.txt | 54 + doc/wiki/Plugins.Lazyexpunge.txt | 202 + doc/wiki/Plugins.Listescape.txt | 64 + doc/wiki/Plugins.MailCrypt.txt | 522 + doc/wiki/Plugins.MailFilter.txt | 80 + doc/wiki/Plugins.MailLog.txt | 54 + doc/wiki/Plugins.MailboxAlias.txt | 46 + doc/wiki/Plugins.Notify.txt | 9 + doc/wiki/Plugins.NotifyStatus.txt | 69 + doc/wiki/Plugins.PushNotification.txt | 505 + doc/wiki/Plugins.QuotaClone.txt | 37 + doc/wiki/Plugins.Snarf.txt | 63 + doc/wiki/Plugins.Stats.txt | 2 + doc/wiki/Plugins.Trash.txt | 41 + doc/wiki/Plugins.VarExpandCrypt.txt | 45 + doc/wiki/Plugins.Virtual.txt | 284 + doc/wiki/Plugins.Welcome.txt | 27 + doc/wiki/Plugins.Zlib.txt | 100 + doc/wiki/Plugins.txt | 102 + doc/wiki/PostLoginScripting.txt | 247 + doc/wiki/PreAuth.txt | 22 + doc/wiki/QuickConfiguration.txt | 209 + doc/wiki/Quota.Configuration.txt | 513 + doc/wiki/Quota.Count.txt | 44 + doc/wiki/Quota.Dict.txt | 201 + doc/wiki/Quota.Dirsize.txt | 21 + doc/wiki/Quota.FS.txt | 122 + doc/wiki/Quota.Maildir.txt | 51 + doc/wiki/Quota.txt | 134 + doc/wiki/Replication.txt | 382 + doc/wiki/RunningDovecot.txt | 140 + doc/wiki/SSL.CertificateClientImporting.txt | 65 + doc/wiki/SSL.CertificateCreation.txt | 93 + doc/wiki/SSL.DovecotConfiguration.txt | 522 + doc/wiki/SSL.SNIClientSupport.txt | 21 + doc/wiki/SSL.txt | 65 + doc/wiki/Sasl.txt | 27 + doc/wiki/SecurityTuning.txt | 22 + doc/wiki/Services.txt | 502 + doc/wiki/SharedMailboxes.ClusterSetup.txt | 51 + doc/wiki/SharedMailboxes.Permissions.txt | 168 + doc/wiki/SharedMailboxes.Public.txt | 241 + doc/wiki/SharedMailboxes.Shared.txt | 306 + doc/wiki/SharedMailboxes.Symlinks.txt | 42 + doc/wiki/SharedMailboxes.txt | 17 + doc/wiki/SocketUnavailable.txt | 84 + doc/wiki/Statistics.Old.txt | 227 + doc/wiki/Statistics.txt | 109 + doc/wiki/Submission.txt | 191 + doc/wiki/SystemUsers.txt | 112 + doc/wiki/TestInstallation.txt | 239 + doc/wiki/TestPop3Installation.txt | 149 + doc/wiki/TimeMovedBackwards.txt | 87 + doc/wiki/Timeouts.txt | 61 + doc/wiki/Upgrading.1.0.txt | 137 + doc/wiki/Upgrading.1.1.txt | 90 + doc/wiki/Upgrading.1.2.txt | 57 + doc/wiki/Upgrading.2.0.txt | 92 + doc/wiki/Upgrading.2.1.txt | 35 + doc/wiki/Upgrading.2.2.txt | 45 + doc/wiki/Upgrading.2.3.txt | 212 + doc/wiki/Upgrading.txt | 26 + doc/wiki/UserDatabase.ExtraFields.txt | 115 + doc/wiki/UserDatabase.NSS.txt | 34 + doc/wiki/UserDatabase.Prefetch.txt | 87 + doc/wiki/UserDatabase.Static.txt | 41 + doc/wiki/UserDatabase.txt | 126 + doc/wiki/UserIds.txt | 147 + doc/wiki/Variables.txt | 355 + doc/wiki/VirtualUsers.Home.txt | 89 + doc/wiki/VirtualUsers.txt | 149 + doc/wiki/WhyDoesItNotWork.txt | 116 + doc/wiki/maildrop.txt | 71 + doc/wiki/mutt.txt | 104 + doc/wiki/uw2dovecot.sh.txt | 13 + dovecot-config.in.in | 58 + dovecot-version.h | 8 + dovecot.service.in | 35 + dovecot.socket | 15 + install-sh | 541 + ltmain.sh | 11251 + m4/ac_checktype2.m4 | 8 + m4/ac_typeof.m4 | 121 + m4/arc4random.m4 | 15 + m4/blockdev.m4 | 41 + m4/c99_vsnprintf.m4 | 29 + m4/clock_gettime.m4 | 5 + m4/crypt.m4 | 11 + m4/crypt_xpg6.m4 | 23 + m4/dbqlk.m4 | 39 + m4/dirent_dtype.m4 | 11 + m4/dovecot.m4 | 619 + m4/fd_passing.m4 | 93 + m4/fdatasync.m4 | 5 + m4/flexible_array_member.m4 | 25 + m4/glibc.m4 | 49 + m4/gmtime_max.m4 | 42 + m4/gmtime_tm_gmtoff.m4 | 14 + m4/ioloop.m4 | 53 + m4/iovec.m4 | 17 + m4/ipv6.m4 | 25 + m4/libcap.m4 | 13 + m4/libtool.m4 | 8394 + m4/libwrap.m4 | 38 + m4/linux_mremap.m4 | 19 + m4/ltoptions.m4 | 437 + m4/ltsugar.m4 | 124 + m4/ltversion.m4 | 23 + m4/lt~obsolete.m4 | 99 + m4/mmap_write.m4 | 44 + m4/mntctl.m4 | 30 + m4/modules.m4 | 16 + m4/notify.m4 | 41 + m4/nsl.m4 | 6 + m4/off_t_max.m4 | 13 + m4/pkg.m4 | 343 + m4/pr_set_dumpable.m4 | 16 + m4/q_quotactl.m4 | 20 + m4/quota.m4 | 31 + m4/random.m4 | 6 + m4/rlimit.m4 | 65 + m4/sendfile.m4 | 46 + m4/size_t_signed.m4 | 51 + m4/sockpeercred.m4 | 6 + m4/sql.m4 | 23 + m4/ssl.m4 | 284 + m4/st_tim.m4 | 41 + m4/static_array.m4 | 19 + m4/test_with.m4 | 18 + m4/time_t.m4 | 42 + m4/typeof.m4 | 16 + m4/typeof_dev_t.m4 | 18 + m4/uoff_t_max.m4 | 13 + m4/vararg.m4 | 77 + m4/want_apparmor.m4 | 24 + m4/want_bsdauth.m4 | 18 + m4/want_bzlib.m4 | 20 + m4/want_cassandra.m4 | 25 + m4/want_cdb.m4 | 19 + m4/want_checkpassword.m4 | 11 + m4/want_clucene.m4 | 12 + m4/want_db.m4 | 33 + m4/want_gssapi.m4 | 113 + m4/want_icu.m4 | 12 + m4/want_ldap.m4 | 58 + m4/want_lua.m4 | 66 + m4/want_lz4.m4 | 24 + m4/want_lzma.m4 | 20 + m4/want_mysql.m4 | 89 + m4/want_pam.m4 | 36 + m4/want_passwd.m4 | 21 + m4/want_pgsql.m4 | 61 + m4/want_prefetch.m4 | 8 + m4/want_shadow.m4 | 24 + m4/want_sodium.m4 | 18 + m4/want_solr.m4 | 21 + m4/want_sqlite.m4 | 20 + m4/want_stemmer.m4 | 14 + m4/want_systemd.m4 | 36 + m4/want_textcat.m4 | 36 + m4/want_unwind.m4 | 19 + m4/want_zlib.m4 | 14 + m4/want_zstd.m4 | 22 + missing | 215 + run-test-valgrind.supp | 84 + src/Makefile.am | 72 + src/Makefile.in | 844 + src/anvil/Makefile.am | 48 + src/anvil/Makefile.in | 867 + src/anvil/anvil-connection.c | 226 + src/anvil/anvil-connection.h | 10 + src/anvil/anvil-settings.c | 50 + src/anvil/common.h | 10 + src/anvil/connect-limit.c | 192 + src/anvil/connect-limit.h | 16 + src/anvil/main.c | 90 + src/anvil/penalty.c | 273 + src/anvil/penalty.h | 22 + src/anvil/test-penalty.c | 64 + src/auth/Makefile.am | 301 + src/auth/Makefile.in | 1928 + src/auth/auth-cache.c | 481 + src/auth/auth-cache.h | 53 + src/auth/auth-client-connection.c | 456 + src/auth/auth-client-connection.h | 37 + src/auth/auth-common.h | 17 + src/auth/auth-fields.c | 226 + src/auth/auth-fields.h | 48 + src/auth/auth-master-connection.c | 855 + src/auth/auth-master-connection.h | 44 + src/auth/auth-penalty.c | 176 + src/auth/auth-penalty.h | 28 + src/auth/auth-policy.c | 620 + src/auth/auth-policy.h | 11 + src/auth/auth-request-fields.c | 525 + src/auth/auth-request-handler-private.h | 27 + src/auth/auth-request-handler.c | 991 + src/auth/auth-request-handler.h | 69 + src/auth/auth-request-stats.c | 77 + src/auth/auth-request-stats.h | 15 + src/auth/auth-request-var-expand.c | 303 + src/auth/auth-request-var-expand.h | 44 + src/auth/auth-request.c | 2595 + src/auth/auth-request.h | 400 + src/auth/auth-settings.c | 553 + src/auth/auth-settings.h | 110 + src/auth/auth-stats.c | 116 + src/auth/auth-stats.h | 16 + src/auth/auth-token.c | 177 + src/auth/auth-token.h | 11 + src/auth/auth-worker-client.c | 972 + src/auth/auth-worker-client.h | 27 + src/auth/auth-worker-server.c | 519 + src/auth/auth-worker-server.h | 18 + src/auth/auth.c | 450 + src/auth/auth.h | 91 + src/auth/checkpassword-reply.c | 110 + src/auth/crypt-blowfish.c | 900 + src/auth/crypt-blowfish.h | 29 + src/auth/db-checkpassword.c | 563 + src/auth/db-checkpassword.h | 29 + src/auth/db-dict-cache-key.c | 64 + src/auth/db-dict.c | 654 + src/auth/db-dict.h | 82 + src/auth/db-ldap.c | 2035 + src/auth/db-ldap.h | 221 + src/auth/db-lua.c | 814 + src/auth/db-lua.h | 33 + src/auth/db-oauth2.c | 919 + src/auth/db-oauth2.h | 48 + src/auth/db-passwd-file.c | 493 + src/auth/db-passwd-file.h | 58 + src/auth/db-sql.c | 178 + src/auth/db-sql.h | 42 + src/auth/main.c | 398 + src/auth/mech-anonymous.c | 48 + src/auth/mech-apop.c | 173 + src/auth/mech-cram-md5.c | 193 + src/auth/mech-digest-md5-private.h | 38 + src/auth/mech-digest-md5.c | 592 + src/auth/mech-dovecot-token.c | 92 + src/auth/mech-external.c | 64 + src/auth/mech-gssapi.c | 797 + src/auth/mech-login.c | 76 + src/auth/mech-oauth2.c | 339 + src/auth/mech-otp-common.c | 71 + src/auth/mech-otp-common.h | 23 + src/auth/mech-otp.c | 240 + src/auth/mech-plain-common.c | 22 + src/auth/mech-plain-common.h | 7 + src/auth/mech-plain.c | 88 + src/auth/mech-scram.c | 550 + src/auth/mech-scram.h | 10 + src/auth/mech-winbind.c | 364 + src/auth/mech.c | 245 + src/auth/mech.h | 77 + src/auth/mycrypt.c | 26 + src/auth/mycrypt.h | 8 + src/auth/passdb-blocking.c | 173 + src/auth/passdb-blocking.h | 11 + src/auth/passdb-bsdauth.c | 97 + src/auth/passdb-cache.c | 214 + src/auth/passdb-cache.h | 21 + src/auth/passdb-checkpassword.c | 153 + src/auth/passdb-dict.c | 184 + src/auth/passdb-imap.c | 241 + src/auth/passdb-ldap.c | 517 + src/auth/passdb-lua.c | 193 + src/auth/passdb-oauth2.c | 90 + src/auth/passdb-pam.c | 401 + src/auth/passdb-passwd-file.c | 210 + src/auth/passdb-passwd.c | 127 + src/auth/passdb-shadow.c | 125 + src/auth/passdb-sql.c | 310 + src/auth/passdb-static.c | 113 + src/auth/passdb-template.c | 102 + src/auth/passdb-template.h | 16 + src/auth/passdb.c | 351 + src/auth/passdb.h | 123 + src/auth/password-scheme-crypt.c | 196 + src/auth/password-scheme-md5crypt.c | 147 + src/auth/password-scheme-otp.c | 40 + src/auth/password-scheme-pbkdf2.c | 82 + src/auth/password-scheme-scram.c | 224 + src/auth/password-scheme-sodium.c | 92 + src/auth/password-scheme.c | 822 + src/auth/password-scheme.h | 147 + src/auth/test-auth-cache.c | 82 + src/auth/test-auth-request-fields.c | 147 + src/auth/test-auth-request-var-expand.c | 259 + src/auth/test-auth.h | 25 + src/auth/test-db-dict.c | 43 + src/auth/test-libpassword.c | 137 + src/auth/test-lua.c | 182 + src/auth/test-main.c | 39 + src/auth/test-mech.c | 412 + src/auth/test-mock.c | 109 + src/auth/test-username-filter.c | 50 + src/auth/userdb-blocking.c | 144 + src/auth/userdb-blocking.h | 12 + src/auth/userdb-checkpassword.c | 92 + src/auth/userdb-dict.c | 205 + src/auth/userdb-ldap.c | 343 + src/auth/userdb-lua.c | 139 + src/auth/userdb-passwd-file.c | 247 + src/auth/userdb-passwd.c | 253 + src/auth/userdb-prefetch.c | 59 + src/auth/userdb-sql.c | 319 + src/auth/userdb-static.c | 144 + src/auth/userdb-template.c | 124 + src/auth/userdb-template.h | 15 + src/auth/userdb.c | 256 + src/auth/userdb.h | 92 + src/config/Makefile.am | 98 + src/config/Makefile.in | 1079 + src/config/all-settings.c | 6112 + src/config/all-settings.h | 8 + src/config/config-connection.c | 267 + src/config/config-connection.h | 9 + src/config/config-filter.c | 401 + src/config/config-filter.h | 58 + src/config/config-parser-private.h | 75 + src/config/config-parser.c | 1212 + src/config/config-parser.h | 33 + src/config/config-request.c | 524 + src/config/config-request.h | 61 + src/config/config-settings.c | 46 + src/config/doveconf.c | 1072 + src/config/main.c | 53 + src/config/old-set-parser.c | 824 + src/config/old-set-parser.h | 16 + src/config/settings-get.pl | 162 + src/config/sysinfo-get.c | 127 + src/config/sysinfo-get.h | 6 + src/config/test-config-parser.c | 170 + src/dict/Makefile.am | 43 + src/dict/Makefile.in | 847 + src/dict/dict-commands.c | 797 + src/dict/dict-commands.h | 21 + src/dict/dict-connection.c | 272 + src/dict/dict-connection.h | 48 + src/dict/dict-init-cache.c | 164 + src/dict/dict-init-cache.h | 12 + src/dict/dict-settings.c | 117 + src/dict/dict-settings.h | 15 + src/dict/main.c | 179 + src/dict/main.h | 6 + src/director/Makefile.am | 70 + src/director/Makefile.in | 928 + src/director/auth-connection.c | 141 + src/director/auth-connection.h | 24 + src/director/director-connection.c | 2712 + src/director/director-connection.h | 47 + src/director/director-host.c | 190 + src/director/director-host.h | 81 + src/director/director-request.c | 354 + src/director/director-request.h | 16 + src/director/director-settings.c | 125 + src/director/director-settings.h | 25 + src/director/director-test.c | 605 + src/director/director.c | 1589 + src/director/director.h | 274 + src/director/doveadm-connection.c | 1196 + src/director/doveadm-connection.h | 13 + src/director/login-connection.c | 346 + src/director/login-connection.h | 20 + src/director/mail-host.c | 560 + src/director/mail-host.h | 90 + src/director/main.c | 366 + src/director/notify-connection.c | 109 + src/director/notify-connection.h | 9 + src/director/test-user-directory.c | 109 + src/director/user-directory.c | 349 + src/director/user-directory.h | 79 + src/dns/Makefile.am | 17 + src/dns/Makefile.in | 803 + src/dns/dns-client-settings.c | 48 + src/dns/dns-client.c | 161 + src/doveadm/Makefile.am | 201 + src/doveadm/Makefile.in | 1515 + src/doveadm/client-connection-http.c | 1227 + src/doveadm/client-connection-private.h | 22 + src/doveadm/client-connection-tcp.c | 558 + src/doveadm/client-connection.c | 127 + src/doveadm/client-connection.h | 26 + src/doveadm/doveadm-auth-server.c | 517 + src/doveadm/doveadm-auth.c | 787 + src/doveadm/doveadm-cmd.c | 469 + src/doveadm/doveadm-cmd.h | 155 + src/doveadm/doveadm-dict.c | 329 + src/doveadm/doveadm-director.c | 1084 + src/doveadm/doveadm-dsync.c | 1567 + src/doveadm/doveadm-dsync.h | 10 + src/doveadm/doveadm-dump-dbox.c | 231 + src/doveadm/doveadm-dump-dcrypt-file.c | 93 + src/doveadm/doveadm-dump-dcrypt-key.c | 215 + src/doveadm/doveadm-dump-index.c | 833 + src/doveadm/doveadm-dump-log.c | 568 + src/doveadm/doveadm-dump-mailboxlog.c | 114 + src/doveadm/doveadm-dump-thread.c | 139 + src/doveadm/doveadm-dump.c | 162 + src/doveadm/doveadm-dump.h | 27 + src/doveadm/doveadm-fs.c | 608 + src/doveadm/doveadm-instance.c | 155 + src/doveadm/doveadm-kick.c | 235 + src/doveadm/doveadm-log.c | 406 + src/doveadm/doveadm-mail-altmove.c | 162 + src/doveadm/doveadm-mail-batch.c | 186 + src/doveadm/doveadm-mail-copymove.c | 224 + src/doveadm/doveadm-mail-deduplicate.c | 146 + src/doveadm/doveadm-mail-expunge.c | 286 + src/doveadm/doveadm-mail-fetch.c | 683 + src/doveadm/doveadm-mail-flags.c | 178 + src/doveadm/doveadm-mail-import.c | 276 + src/doveadm/doveadm-mail-index.c | 300 + src/doveadm/doveadm-mail-iter.c | 176 + src/doveadm/doveadm-mail-iter.h | 34 + src/doveadm/doveadm-mail-mailbox-cache.c | 440 + src/doveadm/doveadm-mail-mailbox-metadata.c | 425 + src/doveadm/doveadm-mail-mailbox-status.c | 275 + src/doveadm/doveadm-mail-mailbox.c | 857 + src/doveadm/doveadm-mail-rebuild.c | 101 + src/doveadm/doveadm-mail-save.c | 142 + src/doveadm/doveadm-mail-search.c | 103 + src/doveadm/doveadm-mail-server.c | 404 + src/doveadm/doveadm-mail.c | 998 + src/doveadm/doveadm-mail.h | 206 + src/doveadm/doveadm-mailbox-list-iter.c | 195 + src/doveadm/doveadm-mailbox-list-iter.h | 25 + src/doveadm/doveadm-master.c | 297 + src/doveadm/doveadm-mutf7.c | 56 + src/doveadm/doveadm-oldstats.c | 604 + src/doveadm/doveadm-penalty.c | 126 + src/doveadm/doveadm-print-flow.c | 111 + src/doveadm/doveadm-print-formatted.c | 92 + src/doveadm/doveadm-print-json.c | 161 + src/doveadm/doveadm-print-pager.c | 113 + src/doveadm/doveadm-print-private.h | 31 + src/doveadm/doveadm-print-server.c | 119 + src/doveadm/doveadm-print-tab.c | 76 + src/doveadm/doveadm-print-table.c | 268 + src/doveadm/doveadm-print.c | 211 + src/doveadm/doveadm-print.h | 48 + src/doveadm/doveadm-proxy.c | 214 + src/doveadm/doveadm-pw.c | 135 + src/doveadm/doveadm-replicator.c | 381 + src/doveadm/doveadm-server.h | 34 + src/doveadm/doveadm-settings.c | 320 + src/doveadm/doveadm-settings.h | 66 + src/doveadm/doveadm-sis.c | 330 + src/doveadm/doveadm-stats.c | 343 + src/doveadm/doveadm-util.c | 221 + src/doveadm/doveadm-util.h | 31 + src/doveadm/doveadm-who.c | 364 + src/doveadm/doveadm-who.h | 37 + src/doveadm/doveadm-zlib.c | 297 + src/doveadm/doveadm.c | 384 + src/doveadm/doveadm.h | 34 + src/doveadm/dsync/Makefile.am | 76 + src/doveadm/dsync/Makefile.in | 1019 + .../dsync/dsync-brain-mailbox-tree-sync.c | 229 + src/doveadm/dsync/dsync-brain-mailbox-tree.c | 614 + src/doveadm/dsync/dsync-brain-mailbox.c | 926 + src/doveadm/dsync/dsync-brain-mails.c | 438 + src/doveadm/dsync/dsync-brain-private.h | 164 + src/doveadm/dsync/dsync-brain.c | 902 + src/doveadm/dsync/dsync-brain.h | 136 + src/doveadm/dsync/dsync-deserializer.c | 193 + src/doveadm/dsync/dsync-deserializer.h | 27 + src/doveadm/dsync/dsync-ibc-pipe.c | 599 + src/doveadm/dsync/dsync-ibc-private.h | 96 + src/doveadm/dsync/dsync-ibc-stream.c | 2138 + src/doveadm/dsync/dsync-ibc.c | 239 + src/doveadm/dsync/dsync-ibc.h | 178 + src/doveadm/dsync/dsync-mail.c | 156 + src/doveadm/dsync/dsync-mail.h | 108 + src/doveadm/dsync/dsync-mailbox-export.c | 961 + src/doveadm/dsync/dsync-mailbox-export.h | 37 + src/doveadm/dsync/dsync-mailbox-import.c | 3018 + src/doveadm/dsync/dsync-mailbox-import.h | 64 + src/doveadm/dsync/dsync-mailbox-state.c | 127 + src/doveadm/dsync/dsync-mailbox-state.h | 24 + src/doveadm/dsync/dsync-mailbox-tree-fill.c | 463 + .../dsync/dsync-mailbox-tree-private.h | 38 + src/doveadm/dsync/dsync-mailbox-tree-sync.c | 1473 + src/doveadm/dsync/dsync-mailbox-tree.c | 571 + src/doveadm/dsync/dsync-mailbox-tree.h | 211 + src/doveadm/dsync/dsync-mailbox.c | 61 + src/doveadm/dsync/dsync-mailbox.h | 44 + src/doveadm/dsync/dsync-serializer.c | 117 + src/doveadm/dsync/dsync-serializer.h | 18 + .../dsync/dsync-transaction-log-scan.c | 608 + .../dsync/dsync-transaction-log-scan.h | 32 + .../dsync/test-dsync-mailbox-tree-sync.c | 781 + src/doveadm/main.c | 129 + src/doveadm/server-connection.c | 691 + src/doveadm/server-connection.h | 35 + src/doveadm/test-doveadm-util.c | 48 + src/imap-hibernate/Makefile.am | 27 + src/imap-hibernate/Makefile.in | 828 + src/imap-hibernate/imap-client.c | 810 + src/imap-hibernate/imap-client.h | 40 + src/imap-hibernate/imap-hibernate-client.c | 304 + src/imap-hibernate/imap-hibernate-client.h | 9 + src/imap-hibernate/imap-hibernate-settings.c | 47 + src/imap-hibernate/imap-master-connection.c | 140 + src/imap-hibernate/imap-master-connection.h | 24 + src/imap-hibernate/main.c | 57 + src/imap-login/Makefile.am | 41 + src/imap-login/Makefile.in | 897 + src/imap-login/client-authenticate.c | 213 + src/imap-login/client-authenticate.h | 16 + src/imap-login/imap-login-client.c | 571 + src/imap-login/imap-login-client.h | 97 + src/imap-login/imap-login-cmd-id.c | 281 + src/imap-login/imap-login-commands.c | 70 + src/imap-login/imap-login-commands.h | 25 + src/imap-login/imap-login-settings.c | 95 + src/imap-login/imap-login-settings.h | 14 + src/imap-login/imap-proxy.c | 530 + src/imap-login/imap-proxy.h | 12 + src/imap-urlauth/Makefile.am | 85 + src/imap-urlauth/Makefile.in | 1014 + src/imap-urlauth/imap-urlauth-client.c | 380 + src/imap-urlauth/imap-urlauth-client.h | 49 + src/imap-urlauth/imap-urlauth-common.h | 13 + .../imap-urlauth-login-settings.c | 75 + .../imap-urlauth-login-settings.h | 6 + src/imap-urlauth/imap-urlauth-login.c | 199 + src/imap-urlauth/imap-urlauth-settings.c | 94 + src/imap-urlauth/imap-urlauth-settings.h | 24 + .../imap-urlauth-worker-settings.c | 88 + .../imap-urlauth-worker-settings.h | 18 + src/imap-urlauth/imap-urlauth-worker.c | 1033 + src/imap-urlauth/imap-urlauth.c | 290 + src/imap/Makefile.am | 130 + src/imap/Makefile.in | 1213 + src/imap/cmd-append.c | 957 + src/imap/cmd-cancelupdate.c | 45 + src/imap/cmd-capability.c | 14 + src/imap/cmd-check.c | 14 + src/imap/cmd-close.c | 36 + src/imap/cmd-copy.c | 407 + src/imap/cmd-create.c | 48 + src/imap/cmd-delete.c | 59 + src/imap/cmd-enable.c | 35 + src/imap/cmd-examine.c | 9 + src/imap/cmd-expunge.c | 68 + src/imap/cmd-fetch.c | 391 + src/imap/cmd-genurlauth.c | 54 + src/imap/cmd-getmetadata.c | 559 + src/imap/cmd-id.c | 27 + src/imap/cmd-idle.c | 308 + src/imap/cmd-list.c | 484 + src/imap/cmd-logout.c | 24 + src/imap/cmd-lsub.c | 9 + src/imap/cmd-namespace.c | 99 + src/imap/cmd-noop.c | 15 + src/imap/cmd-notify.c | 597 + src/imap/cmd-rename.c | 51 + src/imap/cmd-resetkey.c | 97 + src/imap/cmd-search.c | 49 + src/imap/cmd-select.c | 426 + src/imap/cmd-setmetadata.c | 378 + src/imap/cmd-sort.c | 142 + src/imap/cmd-status.c | 54 + src/imap/cmd-store.c | 261 + src/imap/cmd-subscribe.c | 87 + src/imap/cmd-thread.c | 294 + src/imap/cmd-unselect.c | 18 + src/imap/cmd-unsubscribe.c | 9 + src/imap/cmd-urlfetch.c | 410 + src/imap/cmd-x-cancel.c | 28 + src/imap/cmd-x-state.c | 68 + src/imap/imap-client-hibernate.c | 294 + src/imap/imap-client.c | 1681 + src/imap/imap-client.h | 362 + src/imap/imap-commands-util.c | 402 + src/imap/imap-commands-util.h | 81 + src/imap/imap-commands.c | 247 + src/imap/imap-commands.h | 137 + src/imap/imap-common.h | 40 + src/imap/imap-expunge.c | 111 + src/imap/imap-expunge.h | 10 + src/imap/imap-feature.c | 46 + src/imap/imap-feature.h | 24 + src/imap/imap-fetch-body.c | 722 + src/imap/imap-fetch.c | 1040 + src/imap/imap-fetch.h | 166 + src/imap/imap-list.c | 35 + src/imap/imap-list.h | 7 + src/imap/imap-master-client.c | 448 + src/imap/imap-master-client.h | 10 + src/imap/imap-notify.c | 523 + src/imap/imap-notify.h | 75 + src/imap/imap-search-args.c | 353 + src/imap/imap-search-args.h | 47 + src/imap/imap-search.c | 612 + src/imap/imap-search.h | 61 + src/imap/imap-settings.c | 197 + src/imap/imap-settings.h | 49 + src/imap/imap-state.c | 897 + src/imap/imap-state.h | 30 + src/imap/imap-status.c | 172 + src/imap/imap-status.h | 51 + src/imap/imap-sync-private.h | 47 + src/imap/imap-sync.c | 841 + src/imap/imap-sync.h | 25 + src/imap/mail-storage-callbacks.c | 45 + src/imap/main.c | 591 + src/imap/test-imap-client-hibernate.c | 292 + src/indexer/Makefile.am | 47 + src/indexer/Makefile.in | 869 + src/indexer/indexer-client.c | 223 + src/indexer/indexer-client.h | 13 + src/indexer/indexer-queue.c | 275 + src/indexer/indexer-queue.h | 72 + src/indexer/indexer-settings.c | 50 + src/indexer/indexer-worker-settings.c | 46 + src/indexer/indexer-worker.c | 82 + src/indexer/indexer.c | 137 + src/indexer/indexer.h | 12 + src/indexer/master-connection.c | 365 + src/indexer/master-connection.h | 8 + src/indexer/worker-connection.c | 196 + src/indexer/worker-connection.h | 36 + src/indexer/worker-pool.c | 98 + src/indexer/worker-pool.h | 23 + src/ipc/Makefile.am | 25 + src/ipc/Makefile.in | 825 + src/ipc/client.c | 157 + src/ipc/client.h | 9 + src/ipc/ipc-connection.c | 253 + src/ipc/ipc-connection.h | 46 + src/ipc/ipc-group.c | 166 + src/ipc/ipc-group.h | 45 + src/ipc/ipc-settings.c | 50 + src/ipc/main.c | 73 + src/lda/Makefile.am | 38 + src/lda/Makefile.in | 822 + src/lda/main.c | 596 + src/lib-auth/Makefile.am | 46 + src/lib-auth/Makefile.in | 877 + src/lib-auth/auth-client-connection.c | 552 + src/lib-auth/auth-client-interface.h | 43 + src/lib-auth/auth-client-private.h | 88 + src/lib-auth/auth-client-request.c | 366 + src/lib-auth/auth-client.c | 112 + src/lib-auth/auth-client.h | 124 + src/lib-auth/auth-master.c | 1030 + src/lib-auth/auth-master.h | 76 + src/lib-auth/test-auth-master.c | 74 + src/lib-charset/Makefile.am | 37 + src/lib-charset/Makefile.in | 862 + src/lib-charset/charset-iconv.c | 147 + src/lib-charset/charset-utf8-only.c | 51 + src/lib-charset/charset-utf8-private.h | 21 + src/lib-charset/charset-utf8.c | 99 + src/lib-charset/charset-utf8.h | 53 + src/lib-charset/test-charset.c | 231 + src/lib-compression/Makefile.am | 61 + src/lib-compression/Makefile.in | 976 + src/lib-compression/bench-compression.c | 168 + src/lib-compression/compression.c | 250 + src/lib-compression/compression.h | 55 + src/lib-compression/iostream-lz4.h | 30 + src/lib-compression/iostream-zstd-private.h | 35 + src/lib-compression/istream-bzlib.c | 231 + src/lib-compression/istream-decompress.c | 258 + src/lib-compression/istream-lz4.c | 281 + src/lib-compression/istream-lzma.c | 264 + src/lib-compression/istream-zlib.c | 431 + src/lib-compression/istream-zlib.h | 11 + src/lib-compression/istream-zstd.c | 268 + src/lib-compression/ostream-bzlib.c | 307 + src/lib-compression/ostream-lz4.c | 249 + src/lib-compression/ostream-zlib.c | 392 + src/lib-compression/ostream-zlib.h | 26 + src/lib-compression/ostream-zstd.c | 243 + src/lib-compression/test-compression.c | 1122 + src/lib-dcrypt/Makefile.am | 75 + src/lib-dcrypt/Makefile.in | 1142 + src/lib-dcrypt/dcrypt-iostream.h | 16 + src/lib-dcrypt/dcrypt-openssl.c | 3807 + src/lib-dcrypt/dcrypt-private.h | 211 + src/lib-dcrypt/dcrypt.c | 660 + src/lib-dcrypt/dcrypt.h | 409 + src/lib-dcrypt/istream-decrypt.c | 1146 + src/lib-dcrypt/istream-decrypt.h | 48 + src/lib-dcrypt/ostream-encrypt.c | 800 + src/lib-dcrypt/ostream-encrypt.h | 30 + src/lib-dcrypt/sample-v1.asc | 48 + src/lib-dcrypt/sample-v1_short.asc | 4 + src/lib-dcrypt/sample-v2.asc | 287 + src/lib-dcrypt/test-crypto.c | 1314 + src/lib-dcrypt/test-stream.c | 639 + src/lib-dict-backend/Makefile.am | 116 + src/lib-dict-backend/Makefile.in | 1016 + src/lib-dict-backend/dict-cdb.c | 266 + src/lib-dict-backend/dict-ldap-settings.c | 313 + src/lib-dict-backend/dict-ldap-settings.h | 36 + src/lib-dict-backend/dict-ldap.c | 500 + src/lib-dict-backend/dict-sql-private.h | 12 + src/lib-dict-backend/dict-sql-settings.c | 345 + src/lib-dict-backend/dict-sql-settings.h | 47 + src/lib-dict-backend/dict-sql.c | 1566 + src/lib-dict-backend/dict-sql.h | 7 + src/lib-dict-backend/dict.conf | 49 + src/lib-dict-backend/test-dict-sql.c | 314 + src/lib-dict-extra/Makefile.am | 35 + src/lib-dict-extra/Makefile.in | 796 + src/lib-dict-extra/dict-fs.c | 330 + src/lib-dict-extra/dict-register.c | 30 + src/lib-dict-extra/test-dict-fs.c | 106 + src/lib-dict/Makefile.am | 73 + src/lib-dict/Makefile.in | 970 + src/lib-dict/dict-client.c | 1508 + src/lib-dict/dict-client.h | 48 + src/lib-dict/dict-fail.c | 134 + src/lib-dict/dict-file.c | 709 + src/lib-dict/dict-iter-lua.c | 193 + src/lib-dict/dict-lua-private.h | 9 + src/lib-dict/dict-lua.c | 117 + src/lib-dict/dict-lua.h | 18 + src/lib-dict/dict-memcached-ascii.c | 685 + src/lib-dict/dict-memcached.c | 373 + src/lib-dict/dict-private.h | 127 + src/lib-dict/dict-redis.c | 831 + src/lib-dict/dict-transaction-memory.c | 59 + src/lib-dict/dict-transaction-memory.h | 38 + src/lib-dict/dict-txn-lua.c | 262 + src/lib-dict/dict.c | 769 + src/lib-dict/dict.h | 208 + src/lib-dict/test-dict-client.c | 117 + src/lib-dict/test-dict.c | 46 + src/lib-dns/Makefile.am | 36 + src/lib-dns/Makefile.in | 874 + src/lib-dns/dns-lookup.c | 438 + src/lib-dns/dns-lookup.h | 90 + src/lib-dns/dns-util.c | 85 + src/lib-dns/dns-util.h | 36 + src/lib-dns/test-dns-util.c | 124 + src/lib-dovecot/Makefile.am | 11 + src/lib-dovecot/Makefile.in | 705 + src/lib-fs/Makefile.am | 70 + src/lib-fs/Makefile.in | 955 + src/lib-fs/fs-api-private.h | 213 + src/lib-fs/fs-api.c | 1412 + src/lib-fs/fs-api.h | 399 + src/lib-fs/fs-dict.c | 372 + src/lib-fs/fs-metawrap.c | 526 + src/lib-fs/fs-posix.c | 1028 + src/lib-fs/fs-randomfail.c | 555 + src/lib-fs/fs-sis-common.c | 59 + src/lib-fs/fs-sis-common.h | 14 + src/lib-fs/fs-sis-queue.c | 210 + src/lib-fs/fs-sis.c | 369 + src/lib-fs/fs-test-async.c | 103 + src/lib-fs/fs-test.c | 443 + src/lib-fs/fs-test.h | 45 + src/lib-fs/fs-wrapper.c | 172 + src/lib-fs/fs-wrapper.h | 40 + src/lib-fs/istream-fs-file.c | 61 + src/lib-fs/istream-fs-file.h | 13 + src/lib-fs/istream-fs-stats.c | 47 + src/lib-fs/istream-fs-stats.h | 9 + src/lib-fs/istream-metawrap.c | 152 + src/lib-fs/istream-metawrap.h | 14 + src/lib-fs/ostream-cmp.c | 95 + src/lib-fs/ostream-cmp.h | 15 + src/lib-fs/ostream-metawrap.c | 71 + src/lib-fs/ostream-metawrap.h | 8 + src/lib-fs/test-fs-metawrap.c | 103 + src/lib-fs/test-fs-posix.c | 144 + src/lib-fts/Makefile.am | 156 + src/lib-fts/Makefile.in | 1141 + src/lib-fts/PropList.txt | 1579 + src/lib-fts/WordBreakProperty.txt | 1298 + src/lib-fts/fts-common.h | 48 + src/lib-fts/fts-filter-common.c | 20 + src/lib-fts/fts-filter-common.h | 6 + src/lib-fts/fts-filter-contractions.c | 86 + src/lib-fts/fts-filter-english-possessive.c | 47 + src/lib-fts/fts-filter-lowercase.c | 71 + src/lib-fts/fts-filter-normalizer-icu.c | 145 + src/lib-fts/fts-filter-private.h | 35 + src/lib-fts/fts-filter-stemmer-snowball.c | 129 + src/lib-fts/fts-filter-stopwords.c | 127 + src/lib-fts/fts-filter.c | 140 + src/lib-fts/fts-filter.h | 71 + src/lib-fts/fts-icu.c | 204 + src/lib-fts/fts-icu.h | 28 + src/lib-fts/fts-language.c | 368 + src/lib-fts/fts-language.h | 72 + src/lib-fts/fts-library.c | 21 + src/lib-fts/fts-library.h | 7 + src/lib-fts/fts-tokenizer-address.c | 412 + src/lib-fts/fts-tokenizer-common.c | 35 + src/lib-fts/fts-tokenizer-common.h | 9 + src/lib-fts/fts-tokenizer-generic-private.h | 57 + src/lib-fts/fts-tokenizer-generic.c | 906 + src/lib-fts/fts-tokenizer-private.h | 52 + src/lib-fts/fts-tokenizer.c | 260 + src/lib-fts/fts-tokenizer.h | 87 + src/lib-fts/stopwords/stopwords_da.txt | 109 + src/lib-fts/stopwords/stopwords_de.txt | 293 + src/lib-fts/stopwords/stopwords_en.txt | 54 + src/lib-fts/stopwords/stopwords_es.txt | 355 + src/lib-fts/stopwords/stopwords_fi.txt | 260 + src/lib-fts/stopwords/stopwords_fr.txt | 184 + src/lib-fts/stopwords/stopwords_it.txt | 302 + src/lib-fts/stopwords/stopwords_malformed.txt | 2866 + src/lib-fts/stopwords/stopwords_nl.txt | 118 + src/lib-fts/stopwords/stopwords_no.txt | 192 + src/lib-fts/stopwords/stopwords_pt.txt | 252 + src/lib-fts/stopwords/stopwords_ro.txt | 233 + src/lib-fts/stopwords/stopwords_ru.txt | 242 + src/lib-fts/stopwords/stopwords_sv.txt | 131 + src/lib-fts/stopwords/stopwords_tr.txt | 529 + src/lib-fts/test-fts-filter.c | 1025 + src/lib-fts/test-fts-icu.c | 202 + src/lib-fts/test-fts-language.c | 323 + src/lib-fts/test-fts-tokenizer.c | 690 + src/lib-fts/udhr_fra.txt | 217 + src/lib-fts/word-boundary-data.c | 3951 + src/lib-fts/word-break-data.c | 58 + src/lib-fts/word-properties.pl | 34 + src/lib-http/Makefile.am | 211 + src/lib-http/Makefile.in | 1310 + src/lib-http/http-auth.c | 476 + src/lib-http/http-auth.h | 79 + src/lib-http/http-client-connection.c | 1954 + src/lib-http/http-client-host.c | 500 + src/lib-http/http-client-peer.c | 1383 + src/lib-http/http-client-private.h | 718 + src/lib-http/http-client-queue.c | 1065 + src/lib-http/http-client-request.c | 1875 + src/lib-http/http-client.c | 740 + src/lib-http/http-client.h | 496 + src/lib-http/http-common.h | 7 + src/lib-http/http-date.c | 487 + src/lib-http/http-date.h | 17 + src/lib-http/http-header-parser.c | 367 + src/lib-http/http-header-parser.h | 24 + src/lib-http/http-header.c | 98 + src/lib-http/http-header.h | 45 + src/lib-http/http-message-parser.c | 658 + src/lib-http/http-message-parser.h | 77 + src/lib-http/http-parser.c | 208 + src/lib-http/http-parser.h | 63 + src/lib-http/http-request-parser.c | 635 + src/lib-http/http-request-parser.h | 43 + src/lib-http/http-request.c | 32 + src/lib-http/http-request.h | 84 + src/lib-http/http-response-parser.c | 422 + src/lib-http/http-response-parser.h | 26 + src/lib-http/http-response.c | 46 + src/lib-http/http-response.h | 87 + src/lib-http/http-server-connection.c | 1183 + src/lib-http/http-server-ostream.c | 328 + src/lib-http/http-server-private.h | 357 + src/lib-http/http-server-request.c | 1006 + src/lib-http/http-server-resource.c | 276 + src/lib-http/http-server-response.c | 809 + src/lib-http/http-server.c | 132 + src/lib-http/http-server.h | 427 + src/lib-http/http-transfer-chunked.c | 749 + src/lib-http/http-transfer.h | 26 + src/lib-http/http-url.c | 678 + src/lib-http/http-url.h | 108 + src/lib-http/test-http-auth.c | 274 + src/lib-http/test-http-client-errors.c | 3944 + src/lib-http/test-http-client-request.c | 95 + src/lib-http/test-http-client.c | 472 + src/lib-http/test-http-date.c | 223 + src/lib-http/test-http-header-parser.c | 381 + src/lib-http/test-http-payload.c | 2475 + src/lib-http/test-http-request-parser.c | 701 + src/lib-http/test-http-response-parser.c | 406 + src/lib-http/test-http-server-errors.c | 1042 + src/lib-http/test-http-server.c | 245 + src/lib-http/test-http-transfer.c | 347 + src/lib-http/test-http-url.c | 950 + src/lib-imap-client/Makefile.am | 53 + src/lib-imap-client/Makefile.in | 880 + src/lib-imap-client/imapc-client-private.h | 63 + src/lib-imap-client/imapc-client.c | 584 + src/lib-imap-client/imapc-client.h | 250 + src/lib-imap-client/imapc-connection.c | 2557 + src/lib-imap-client/imapc-connection.h | 64 + src/lib-imap-client/imapc-msgmap.c | 89 + src/lib-imap-client/imapc-msgmap.h | 18 + src/lib-imap-client/test-imapc-client.c | 901 + src/lib-imap-storage/Makefile.am | 24 + src/lib-imap-storage/Makefile.in | 825 + src/lib-imap-storage/imap-metadata.c | 314 + src/lib-imap-storage/imap-metadata.h | 61 + src/lib-imap-storage/imap-msgpart-url.c | 287 + src/lib-imap-storage/imap-msgpart-url.h | 50 + src/lib-imap-storage/imap-msgpart.c | 860 + src/lib-imap-storage/imap-msgpart.h | 68 + src/lib-imap-urlauth/Makefile.am | 29 + src/lib-imap-urlauth/Makefile.in | 835 + src/lib-imap-urlauth/imap-urlauth-backend.c | 174 + src/lib-imap-urlauth/imap-urlauth-backend.h | 16 + .../imap-urlauth-connection.c | 1027 + .../imap-urlauth-connection.h | 42 + src/lib-imap-urlauth/imap-urlauth-fetch.c | 530 + src/lib-imap-urlauth/imap-urlauth-fetch.h | 56 + src/lib-imap-urlauth/imap-urlauth-private.h | 20 + src/lib-imap-urlauth/imap-urlauth.c | 486 + src/lib-imap-urlauth/imap-urlauth.h | 55 + src/lib-imap/Makefile.am | 120 + src/lib-imap/Makefile.in | 1196 + src/lib-imap/fuzz-imap-bodystructure.c | 52 + src/lib-imap/fuzz-imap-utf7.c | 15 + src/lib-imap/imap-arg.c | 137 + src/lib-imap/imap-arg.h | 108 + src/lib-imap/imap-base-subject.c | 248 + src/lib-imap/imap-base-subject.h | 13 + src/lib-imap/imap-bodystructure.c | 972 + src/lib-imap/imap-bodystructure.h | 39 + src/lib-imap/imap-date.c | 247 + src/lib-imap/imap-date.h | 25 + src/lib-imap/imap-envelope.c | 242 + src/lib-imap/imap-envelope.h | 20 + src/lib-imap/imap-id.c | 173 + src/lib-imap/imap-id.h | 19 + src/lib-imap/imap-keepalive.c | 47 + src/lib-imap/imap-keepalive.h | 24 + src/lib-imap/imap-match.c | 382 + src/lib-imap/imap-match.h | 42 + src/lib-imap/imap-parser.c | 1023 + src/lib-imap/imap-parser.h | 117 + src/lib-imap/imap-quote.c | 239 + src/lib-imap/imap-quote.h | 21 + src/lib-imap/imap-resp-code.h | 28 + src/lib-imap/imap-seqset.c | 105 + src/lib-imap/imap-seqset.h | 15 + src/lib-imap/imap-url.c | 1009 + src/lib-imap/imap-url.h | 71 + src/lib-imap/imap-utf7.c | 380 + src/lib-imap/imap-utf7.h | 28 + src/lib-imap/imap-util.c | 202 + src/lib-imap/imap-util.h | 29 + src/lib-imap/test-imap-bodystructure.c | 734 + src/lib-imap/test-imap-envelope.c | 205 + src/lib-imap/test-imap-match.c | 127 + src/lib-imap/test-imap-parser.c | 157 + src/lib-imap/test-imap-quote.c | 171 + src/lib-imap/test-imap-url.c | 1029 + src/lib-imap/test-imap-utf7.c | 216 + src/lib-imap/test-imap-util.c | 79 + src/lib-index/Makefile.am | 150 + src/lib-index/Makefile.in | 1285 + src/lib-index/mail-cache-decisions.c | 238 + src/lib-index/mail-cache-fields.c | 660 + src/lib-index/mail-cache-lookup.c | 694 + src/lib-index/mail-cache-private.h | 421 + src/lib-index/mail-cache-purge.c | 724 + src/lib-index/mail-cache-sync-update.c | 68 + src/lib-index/mail-cache-transaction.c | 929 + src/lib-index/mail-cache.c | 1005 + src/lib-index/mail-cache.h | 193 + src/lib-index/mail-index-alloc-cache.c | 315 + src/lib-index/mail-index-alloc-cache.h | 20 + src/lib-index/mail-index-dummy-view.c | 47 + src/lib-index/mail-index-fsck.c | 495 + src/lib-index/mail-index-lock.c | 63 + src/lib-index/mail-index-map-hdr.c | 359 + src/lib-index/mail-index-map-read.c | 519 + src/lib-index/mail-index-map.c | 595 + src/lib-index/mail-index-modseq.c | 733 + src/lib-index/mail-index-modseq.h | 66 + src/lib-index/mail-index-private.h | 437 + src/lib-index/mail-index-strmap.c | 1259 + src/lib-index/mail-index-strmap.h | 81 + src/lib-index/mail-index-sync-ext.c | 735 + src/lib-index/mail-index-sync-keywords.c | 347 + src/lib-index/mail-index-sync-private.h | 104 + src/lib-index/mail-index-sync-update.c | 1088 + src/lib-index/mail-index-sync.c | 1068 + src/lib-index/mail-index-transaction-export.c | 533 + src/lib-index/mail-index-transaction-finish.c | 350 + .../mail-index-transaction-private.h | 165 + .../mail-index-transaction-sort-appends.c | 184 + src/lib-index/mail-index-transaction-update.c | 1367 + src/lib-index/mail-index-transaction-view.c | 534 + src/lib-index/mail-index-transaction.c | 360 + src/lib-index/mail-index-util.c | 138 + src/lib-index/mail-index-util.h | 22 + src/lib-index/mail-index-view-private.h | 120 + src/lib-index/mail-index-view-sync.c | 1045 + src/lib-index/mail-index-view.c | 651 + src/lib-index/mail-index-write.c | 215 + src/lib-index/mail-index.c | 1110 + src/lib-index/mail-index.h | 817 + src/lib-index/mail-transaction-log-append.c | 254 + src/lib-index/mail-transaction-log-file.c | 1685 + src/lib-index/mail-transaction-log-modseq.c | 298 + src/lib-index/mail-transaction-log-private.h | 199 + .../mail-transaction-log-view-private.h | 33 + src/lib-index/mail-transaction-log-view.c | 909 + src/lib-index/mail-transaction-log.c | 664 + src/lib-index/mail-transaction-log.h | 494 + src/lib-index/mailbox-log.c | 292 + src/lib-index/mailbox-log.h | 44 + src/lib-index/test-mail-cache-common.c | 166 + src/lib-index/test-mail-cache-fields.c | 112 + src/lib-index/test-mail-cache-purge.c | 1076 + src/lib-index/test-mail-cache.c | 764 + src/lib-index/test-mail-cache.h | 32 + src/lib-index/test-mail-index-map.c | 57 + src/lib-index/test-mail-index-modseq.c | 77 + src/lib-index/test-mail-index-sync-ext.c | 86 + .../test-mail-index-transaction-finish.c | 297 + .../test-mail-index-transaction-update.c | 683 + src/lib-index/test-mail-index-write.c | 151 + src/lib-index/test-mail-index.c | 169 + src/lib-index/test-mail-index.h | 51 + .../test-mail-transaction-log-append.c | 176 + .../test-mail-transaction-log-file.c | 418 + .../test-mail-transaction-log-view.c | 268 + src/lib-lda/Makefile.am | 35 + src/lib-lda/Makefile.in | 878 + src/lib-lda/lda-settings.c | 80 + src/lib-lda/lda-settings.h | 21 + src/lib-lda/mail-deliver.c | 810 + src/lib-lda/mail-deliver.h | 185 + src/lib-lda/mail-send.c | 216 + src/lib-lda/mail-send.h | 11 + src/lib-ldap/Makefile.am | 42 + src/lib-ldap/Makefile.in | 890 + src/lib-ldap/ldap-client.c | 74 + src/lib-ldap/ldap-client.h | 102 + src/lib-ldap/ldap-compare.c | 121 + src/lib-ldap/ldap-connection-pool.c | 113 + src/lib-ldap/ldap-connection-pool.h | 27 + src/lib-ldap/ldap-connection.c | 714 + src/lib-ldap/ldap-entry.c | 72 + src/lib-ldap/ldap-iterator.c | 29 + src/lib-ldap/ldap-private.h | 129 + src/lib-ldap/ldap-search.c | 169 + src/lib-lua/Makefile.am | 68 + src/lib-lua/Makefile.in | 971 + src/lib-lua/dlua-compat.c | 157 + src/lib-lua/dlua-compat.h | 69 + src/lib-lua/dlua-dovecot-http.c | 522 + src/lib-lua/dlua-dovecot.c | 681 + src/lib-lua/dlua-error.c | 13 + src/lib-lua/dlua-pushstring.c | 26 + src/lib-lua/dlua-resume.c | 208 + src/lib-lua/dlua-script-private.h | 264 + src/lib-lua/dlua-script.c | 453 + src/lib-lua/dlua-script.h | 28 + src/lib-lua/dlua-table.c | 301 + src/lib-lua/dlua-thread.c | 276 + src/lib-lua/dlua-wrapper.h | 186 + src/lib-lua/test-dict-lua.c | 99 + src/lib-lua/test-lua.c | 473 + src/lib-mail/Makefile.am | 262 + src/lib-mail/Makefile.in | 1629 + src/lib-mail/fuzz-message-parser.c | 28 + src/lib-mail/html-entities.h | 253 + src/lib-mail/istream-attachment-connector.c | 149 + src/lib-mail/istream-attachment-connector.h | 28 + src/lib-mail/istream-attachment-extractor.c | 740 + src/lib-mail/istream-attachment-extractor.h | 62 + src/lib-mail/istream-binary-converter.c | 309 + src/lib-mail/istream-binary-converter.h | 6 + src/lib-mail/istream-dot.c | 236 + src/lib-mail/istream-dot.h | 9 + src/lib-mail/istream-header-filter.c | 762 + src/lib-mail/istream-header-filter.h | 52 + src/lib-mail/istream-nonuls.c | 79 + src/lib-mail/istream-nonuls.h | 7 + src/lib-mail/istream-qp-decoder.c | 140 + src/lib-mail/istream-qp-encoder.c | 127 + src/lib-mail/istream-qp.h | 12 + src/lib-mail/mail-html2text.c | 354 + src/lib-mail/mail-html2text.h | 22 + src/lib-mail/mail-types.h | 25 + src/lib-mail/mail-user-hash.c | 48 + src/lib-mail/mail-user-hash.h | 10 + src/lib-mail/mbox-from.c | 301 + src/lib-mail/mbox-from.h | 12 + src/lib-mail/message-address.c | 679 + src/lib-mail/message-address.h | 71 + src/lib-mail/message-binary-part.c | 44 + src/lib-mail/message-binary-part.h | 29 + src/lib-mail/message-date.c | 283 + src/lib-mail/message-date.h | 12 + src/lib-mail/message-decoder.c | 390 + src/lib-mail/message-decoder.h | 54 + src/lib-mail/message-header-decode.c | 188 + src/lib-mail/message-header-decode.h | 22 + src/lib-mail/message-header-encode.c | 406 + src/lib-mail/message-header-encode.h | 27 + src/lib-mail/message-header-hash.c | 72 + src/lib-mail/message-header-hash.h | 18 + src/lib-mail/message-header-parser.c | 500 + src/lib-mail/message-header-parser.h | 95 + src/lib-mail/message-id.c | 129 + src/lib-mail/message-id.h | 8 + src/lib-mail/message-parser-from-parts.c | 365 + src/lib-mail/message-parser-private.h | 64 + src/lib-mail/message-parser.c | 922 + src/lib-mail/message-parser.h | 118 + src/lib-mail/message-part-data.c | 595 + src/lib-mail/message-part-data.h | 103 + src/lib-mail/message-part-serialize.c | 269 + src/lib-mail/message-part-serialize.h | 16 + src/lib-mail/message-part.c | 103 + src/lib-mail/message-part.h | 67 + src/lib-mail/message-search.c | 246 + src/lib-mail/message-search.h | 40 + src/lib-mail/message-size.c | 174 + src/lib-mail/message-size.h | 28 + src/lib-mail/message-snippet.c | 207 + src/lib-mail/message-snippet.h | 14 + src/lib-mail/ostream-dot.c | 235 + src/lib-mail/ostream-dot.h | 15 + src/lib-mail/qp-decoder.c | 285 + src/lib-mail/qp-decoder.h | 19 + src/lib-mail/qp-encoder.c | 162 + src/lib-mail/qp-encoder.h | 25 + src/lib-mail/quoted-printable.c | 49 + src/lib-mail/quoted-printable.h | 8 + src/lib-mail/rfc2231-parser.c | 179 + src/lib-mail/rfc2231-parser.h | 13 + src/lib-mail/rfc822-parser.c | 522 + src/lib-mail/rfc822-parser.h | 71 + src/lib-mail/test-istream-attachment.c | 486 + src/lib-mail/test-istream-binary-converter.c | 215 + src/lib-mail/test-istream-dot.c | 230 + src/lib-mail/test-istream-header-filter.c | 701 + src/lib-mail/test-istream-qp-decoder.c | 197 + src/lib-mail/test-istream-qp-encoder.c | 160 + src/lib-mail/test-mail-html2text.c | 120 + src/lib-mail/test-mail-user-hash.c | 185 + src/lib-mail/test-mbox-from.c | 104 + src/lib-mail/test-message-address.c | 568 + src/lib-mail/test-message-date.c | 64 + src/lib-mail/test-message-decoder.c | 513 + src/lib-mail/test-message-header-decode.c | 216 + src/lib-mail/test-message-header-encode.c | 295 + src/lib-mail/test-message-header-hash.c | 111 + src/lib-mail/test-message-header-parser.c | 546 + src/lib-mail/test-message-id.c | 46 + src/lib-mail/test-message-parser.c | 1552 + src/lib-mail/test-message-part-serialize.c | 266 + src/lib-mail/test-message-part.c | 117 + src/lib-mail/test-message-search.c | 521 + src/lib-mail/test-message-size.c | 159 + src/lib-mail/test-message-snippet.c | 329 + src/lib-mail/test-ostream-dot.c | 103 + src/lib-mail/test-qp-decoder.c | 188 + src/lib-mail/test-qp-encoder.c | 206 + src/lib-mail/test-quoted-printable.c | 52 + src/lib-mail/test-rfc2231-parser.c | 51 + src/lib-mail/test-rfc822-parser.c | 445 + src/lib-master/Makefile.am | 83 + src/lib-master/Makefile.in | 967 + src/lib-master/anvil-client.c | 275 + src/lib-master/anvil-client.h | 37 + src/lib-master/ipc-client.c | 220 + src/lib-master/ipc-client.h | 24 + src/lib-master/ipc-server.c | 202 + src/lib-master/ipc-server.h | 20 + src/lib-master/master-auth.c | 286 + src/lib-master/master-auth.h | 112 + src/lib-master/master-instance.c | 369 + src/lib-master/master-instance.h | 42 + src/lib-master/master-interface.h | 121 + src/lib-master/master-login-auth.c | 642 + src/lib-master/master-login-auth.h | 28 + src/lib-master/master-login.c | 598 + src/lib-master/master-login.h | 51 + src/lib-master/master-service-haproxy.c | 689 + src/lib-master/master-service-private.h | 109 + .../master-service-settings-cache.c | 410 + .../master-service-settings-cache.h | 16 + src/lib-master/master-service-settings.c | 816 + src/lib-master/master-service-settings.h | 115 + src/lib-master/master-service-ssl-settings.c | 279 + src/lib-master/master-service-ssl-settings.h | 65 + src/lib-master/master-service-ssl.c | 105 + src/lib-master/master-service-ssl.h | 16 + src/lib-master/master-service.c | 1557 + src/lib-master/master-service.h | 262 + src/lib-master/service-settings.h | 82 + src/lib-master/stats-client.c | 399 + src/lib-master/stats-client.h | 8 + src/lib-master/syslog-util.c | 65 + src/lib-master/syslog-util.h | 14 + src/lib-master/test-event-stats.c | 784 + .../test-master-service-settings-cache.c | 125 + src/lib-oauth2/Makefile.am | 71 + src/lib-oauth2/Makefile.in | 919 + src/lib-oauth2/oauth2-jwt.c | 549 + src/lib-oauth2/oauth2-key-cache.c | 158 + src/lib-oauth2/oauth2-private.h | 50 + src/lib-oauth2/oauth2-request.c | 377 + src/lib-oauth2/oauth2.c | 41 + src/lib-oauth2/oauth2.h | 149 + src/lib-oauth2/test-oauth2-json.c | 104 + src/lib-oauth2/test-oauth2-jwt.c | 919 + src/lib-old-stats/Makefile.am | 18 + src/lib-old-stats/Makefile.in | 820 + src/lib-old-stats/stats-connection.c | 119 + src/lib-old-stats/stats-connection.h | 11 + src/lib-old-stats/stats-parser.c | 178 + src/lib-old-stats/stats-parser.h | 29 + src/lib-old-stats/stats.c | 229 + src/lib-old-stats/stats.h | 71 + src/lib-otp/Makefile.am | 17 + src/lib-otp/Makefile.in | 771 + src/lib-otp/otp-dictionary.c | 589 + src/lib-otp/otp-dictionary.h | 6 + src/lib-otp/otp-hash.c | 165 + src/lib-otp/otp-hash.h | 26 + src/lib-otp/otp-parity.c | 29 + src/lib-otp/otp-parity.h | 16 + src/lib-otp/otp-parse.c | 253 + src/lib-otp/otp-parse.h | 16 + src/lib-otp/otp.h | 22 + src/lib-program-client/Makefile.am | 55 + src/lib-program-client/Makefile.in | 912 + src/lib-program-client/program-client-local.c | 556 + .../program-client-private.h | 85 + .../program-client-remote.c | 702 + src/lib-program-client/program-client.c | 745 + src/lib-program-client/program-client.h | 101 + .../test-program-client-local.c | 289 + .../test-program-client-net.c | 545 + .../test-program-client-unix.c | 441 + src/lib-sasl/Makefile.am | 40 + src/lib-sasl/Makefile.in | 870 + src/lib-sasl/dsasl-client-private.h | 45 + src/lib-sasl/dsasl-client.c | 152 + src/lib-sasl/dsasl-client.h | 50 + src/lib-sasl/mech-external.c | 59 + src/lib-sasl/mech-login.c | 75 + src/lib-sasl/mech-oauthbearer.c | 201 + src/lib-sasl/mech-plain.c | 70 + src/lib-sasl/test-sasl-client.c | 419 + src/lib-settings/Makefile.am | 40 + src/lib-settings/Makefile.in | 870 + src/lib-settings/settings-parser.c | 2226 + src/lib-settings/settings-parser.h | 281 + src/lib-settings/settings.c | 434 + src/lib-settings/settings.h | 73 + src/lib-settings/test-settings-parser.c | 340 + src/lib-settings/test-settings.c | 165 + src/lib-smtp/Makefile.am | 192 + src/lib-smtp/Makefile.in | 1356 + src/lib-smtp/fuzz-smtp-server.c | 102 + src/lib-smtp/smtp-address.c | 958 + src/lib-smtp/smtp-address.h | 214 + src/lib-smtp/smtp-client-command.c | 1580 + src/lib-smtp/smtp-client-command.h | 274 + src/lib-smtp/smtp-client-connection.c | 2522 + src/lib-smtp/smtp-client-connection.h | 93 + src/lib-smtp/smtp-client-private.h | 340 + src/lib-smtp/smtp-client-transaction.c | 1656 + src/lib-smtp/smtp-client-transaction.h | 259 + src/lib-smtp/smtp-client.c | 142 + src/lib-smtp/smtp-client.h | 128 + src/lib-smtp/smtp-command-parser.c | 613 + src/lib-smtp/smtp-command-parser.h | 51 + src/lib-smtp/smtp-command.h | 38 + src/lib-smtp/smtp-common.c | 91 + src/lib-smtp/smtp-common.h | 119 + src/lib-smtp/smtp-params.c | 1375 + src/lib-smtp/smtp-params.h | 233 + src/lib-smtp/smtp-parser.c | 587 + src/lib-smtp/smtp-parser.h | 89 + src/lib-smtp/smtp-reply-parser.c | 657 + src/lib-smtp/smtp-reply-parser.h | 25 + src/lib-smtp/smtp-reply.c | 186 + src/lib-smtp/smtp-reply.h | 82 + src/lib-smtp/smtp-server-cmd-auth.c | 242 + src/lib-smtp/smtp-server-cmd-data.c | 679 + src/lib-smtp/smtp-server-cmd-helo.c | 196 + src/lib-smtp/smtp-server-cmd-mail.c | 216 + src/lib-smtp/smtp-server-cmd-noop.c | 52 + src/lib-smtp/smtp-server-cmd-quit.c | 42 + src/lib-smtp/smtp-server-cmd-rcpt.c | 243 + src/lib-smtp/smtp-server-cmd-rset.c | 70 + src/lib-smtp/smtp-server-cmd-starttls.c | 179 + src/lib-smtp/smtp-server-cmd-vrfy.c | 73 + src/lib-smtp/smtp-server-cmd-xclient.c | 234 + src/lib-smtp/smtp-server-command.c | 901 + src/lib-smtp/smtp-server-connection.c | 1648 + src/lib-smtp/smtp-server-private.h | 404 + src/lib-smtp/smtp-server-recipient.c | 361 + src/lib-smtp/smtp-server-reply.c | 876 + src/lib-smtp/smtp-server-transaction.c | 361 + src/lib-smtp/smtp-server.c | 153 + src/lib-smtp/smtp-server.h | 802 + src/lib-smtp/smtp-submit-settings.c | 69 + src/lib-smtp/smtp-submit-settings.h | 17 + src/lib-smtp/smtp-submit.c | 505 + src/lib-smtp/smtp-submit.h | 73 + src/lib-smtp/smtp-syntax.c | 327 + src/lib-smtp/smtp-syntax.h | 49 + src/lib-smtp/test-bin/sendmail-exit-1.sh | 4 + src/lib-smtp/test-bin/sendmail-success.sh | 4 + src/lib-smtp/test-smtp-address.c | 1382 + src/lib-smtp/test-smtp-client-errors.c | 4374 + src/lib-smtp/test-smtp-command-parser.c | 643 + src/lib-smtp/test-smtp-params.c | 894 + src/lib-smtp/test-smtp-payload.c | 1148 + src/lib-smtp/test-smtp-reply.c | 279 + src/lib-smtp/test-smtp-server-errors.c | 3883 + src/lib-smtp/test-smtp-submit.c | 2199 + src/lib-smtp/test-smtp-syntax.c | 150 + src/lib-sql/Makefile.am | 144 + src/lib-sql/Makefile.in | 1159 + src/lib-sql/driver-cassandra.c | 2588 + src/lib-sql/driver-mysql.c | 844 + src/lib-sql/driver-pgsql.c | 1344 + src/lib-sql/driver-sqlite.c | 555 + src/lib-sql/driver-sqlpool.c | 934 + src/lib-sql/driver-test.c | 514 + src/lib-sql/driver-test.h | 28 + src/lib-sql/sql-api-private.h | 255 + src/lib-sql/sql-api.c | 846 + src/lib-sql/sql-api.h | 251 + src/lib-sql/sql-db-cache.c | 156 + src/lib-sql/sql-db-cache.h | 13 + src/lib-ssl-iostream/Makefile.am | 61 + src/lib-ssl-iostream/Makefile.in | 970 + src/lib-ssl-iostream/dovecot-openssl-common.c | 132 + src/lib-ssl-iostream/dovecot-openssl-common.h | 16 + .../iostream-openssl-common.c | 343 + .../iostream-openssl-context.c | 755 + src/lib-ssl-iostream/iostream-openssl.c | 946 + src/lib-ssl-iostream/iostream-openssl.h | 129 + .../iostream-ssl-context-cache.c | 129 + src/lib-ssl-iostream/iostream-ssl-private.h | 64 + src/lib-ssl-iostream/iostream-ssl-test.c | 158 + src/lib-ssl-iostream/iostream-ssl-test.h | 9 + src/lib-ssl-iostream/iostream-ssl.c | 351 + src/lib-ssl-iostream/iostream-ssl.h | 175 + src/lib-ssl-iostream/istream-openssl.c | 130 + src/lib-ssl-iostream/ostream-openssl.c | 339 + src/lib-ssl-iostream/test-iostream-ssl.c | 559 + src/lib-storage/Makefile.am | 210 + src/lib-storage/Makefile.in | 1509 + src/lib-storage/fail-mail-storage.c | 61 + src/lib-storage/fail-mail-storage.h | 19 + src/lib-storage/fail-mail.c | 271 + src/lib-storage/fail-mailbox.c | 344 + src/lib-storage/index/Makefile.am | 58 + src/lib-storage/index/Makefile.in | 1061 + src/lib-storage/index/dbox-common/Makefile.am | 29 + src/lib-storage/index/dbox-common/Makefile.in | 843 + .../index/dbox-common/dbox-attachment.c | 77 + .../index/dbox-common/dbox-attachment.h | 16 + .../index/dbox-common/dbox-file-fix.c | 519 + src/lib-storage/index/dbox-common/dbox-file.c | 796 + src/lib-storage/index/dbox-common/dbox-file.h | 218 + src/lib-storage/index/dbox-common/dbox-mail.c | 318 + src/lib-storage/index/dbox-common/dbox-mail.h | 34 + src/lib-storage/index/dbox-common/dbox-save.c | 226 + src/lib-storage/index/dbox-common/dbox-save.h | 41 + .../index/dbox-common/dbox-storage.c | 465 + .../index/dbox-common/dbox-storage.h | 89 + src/lib-storage/index/dbox-multi/Makefile.am | 36 + src/lib-storage/index/dbox-multi/Makefile.in | 866 + .../index/dbox-multi/mdbox-deleted-storage.c | 319 + src/lib-storage/index/dbox-multi/mdbox-file.c | 349 + src/lib-storage/index/dbox-multi/mdbox-file.h | 29 + src/lib-storage/index/dbox-multi/mdbox-mail.c | 265 + .../index/dbox-multi/mdbox-map-private.h | 64 + src/lib-storage/index/dbox-multi/mdbox-map.c | 1492 + src/lib-storage/index/dbox-multi/mdbox-map.h | 144 + .../index/dbox-multi/mdbox-purge.c | 690 + src/lib-storage/index/dbox-multi/mdbox-save.c | 493 + .../index/dbox-multi/mdbox-settings.c | 43 + .../index/dbox-multi/mdbox-settings.h | 12 + .../index/dbox-multi/mdbox-storage-rebuild.c | 1005 + .../index/dbox-multi/mdbox-storage-rebuild.h | 10 + .../index/dbox-multi/mdbox-storage.c | 529 + .../index/dbox-multi/mdbox-storage.h | 118 + src/lib-storage/index/dbox-multi/mdbox-sync.c | 377 + src/lib-storage/index/dbox-multi/mdbox-sync.h | 37 + src/lib-storage/index/dbox-single/Makefile.am | 30 + src/lib-storage/index/dbox-single/Makefile.in | 848 + .../index/dbox-single/sdbox-copy.c | 185 + .../index/dbox-single/sdbox-file.c | 447 + .../index/dbox-single/sdbox-file.h | 43 + .../index/dbox-single/sdbox-mail.c | 182 + .../index/dbox-single/sdbox-save.c | 359 + .../index/dbox-single/sdbox-storage.c | 535 + .../index/dbox-single/sdbox-storage.h | 69 + .../index/dbox-single/sdbox-sync-rebuild.c | 218 + .../index/dbox-single/sdbox-sync.c | 326 + .../index/dbox-single/sdbox-sync.h | 38 + src/lib-storage/index/imapc/Makefile.am | 36 + src/lib-storage/index/imapc/Makefile.in | 861 + src/lib-storage/index/imapc/imapc-list.c | 1013 + src/lib-storage/index/imapc/imapc-list.h | 41 + .../index/imapc/imapc-mail-fetch.c | 911 + src/lib-storage/index/imapc/imapc-mail.c | 675 + src/lib-storage/index/imapc/imapc-mail.h | 51 + src/lib-storage/index/imapc/imapc-mailbox.c | 1015 + src/lib-storage/index/imapc/imapc-save.c | 829 + src/lib-storage/index/imapc/imapc-search.c | 332 + src/lib-storage/index/imapc/imapc-search.h | 18 + src/lib-storage/index/imapc/imapc-settings.c | 173 + src/lib-storage/index/imapc/imapc-settings.h | 63 + src/lib-storage/index/imapc/imapc-storage.c | 1353 + src/lib-storage/index/imapc/imapc-storage.h | 274 + src/lib-storage/index/imapc/imapc-sync.c | 702 + src/lib-storage/index/imapc/imapc-sync.h | 39 + src/lib-storage/index/index-attachment.c | 446 + src/lib-storage/index/index-attachment.h | 52 + src/lib-storage/index/index-attribute.c | 333 + src/lib-storage/index/index-mail-binary.c | 598 + src/lib-storage/index/index-mail-headers.c | 990 + src/lib-storage/index/index-mail.c | 2625 + src/lib-storage/index/index-mail.h | 293 + src/lib-storage/index/index-mailbox-size.c | 502 + src/lib-storage/index/index-mailbox-size.h | 20 + src/lib-storage/index/index-pop3-uidl.c | 104 + src/lib-storage/index/index-pop3-uidl.h | 16 + src/lib-storage/index/index-rebuild.c | 257 + src/lib-storage/index/index-rebuild.h | 32 + src/lib-storage/index/index-search-mime.c | 624 + src/lib-storage/index/index-search-private.h | 45 + src/lib-storage/index/index-search-result.c | 194 + src/lib-storage/index/index-search-result.h | 11 + src/lib-storage/index/index-search.c | 1923 + src/lib-storage/index/index-sort-private.h | 35 + src/lib-storage/index/index-sort-string.c | 944 + src/lib-storage/index/index-sort.c | 738 + src/lib-storage/index/index-sort.h | 18 + src/lib-storage/index/index-status.c | 344 + src/lib-storage/index/index-storage.c | 1296 + src/lib-storage/index/index-storage.h | 194 + src/lib-storage/index/index-sync-changes.c | 200 + src/lib-storage/index/index-sync-changes.h | 28 + src/lib-storage/index/index-sync-private.h | 38 + src/lib-storage/index/index-sync-pvt.c | 345 + src/lib-storage/index/index-sync-search.c | 97 + src/lib-storage/index/index-sync.c | 560 + src/lib-storage/index/index-thread-finish.c | 682 + src/lib-storage/index/index-thread-links.c | 242 + src/lib-storage/index/index-thread-private.h | 82 + src/lib-storage/index/index-thread.c | 670 + src/lib-storage/index/index-transaction.c | 230 + src/lib-storage/index/istream-mail.c | 173 + src/lib-storage/index/istream-mail.h | 7 + src/lib-storage/index/maildir/Makefile.am | 36 + src/lib-storage/index/maildir/Makefile.in | 875 + src/lib-storage/index/maildir/maildir-copy.c | 149 + .../index/maildir/maildir-filename-flags.c | 185 + .../index/maildir/maildir-filename-flags.h | 13 + .../index/maildir/maildir-filename.c | 143 + .../index/maildir/maildir-filename.h | 14 + .../index/maildir/maildir-keywords.c | 499 + .../index/maildir/maildir-keywords.h | 36 + src/lib-storage/index/maildir/maildir-mail.c | 809 + src/lib-storage/index/maildir/maildir-save.c | 1084 + .../index/maildir/maildir-settings.c | 46 + .../index/maildir/maildir-settings.h | 13 + .../index/maildir/maildir-storage.c | 795 + .../index/maildir/maildir-storage.h | 148 + .../index/maildir/maildir-sync-index.c | 810 + src/lib-storage/index/maildir/maildir-sync.c | 1132 + src/lib-storage/index/maildir/maildir-sync.h | 59 + .../index/maildir/maildir-uidlist.c | 2151 + .../index/maildir/maildir-uidlist.h | 161 + src/lib-storage/index/maildir/maildir-util.c | 323 + src/lib-storage/index/mbox/Makefile.am | 39 + src/lib-storage/index/mbox/Makefile.in | 884 + src/lib-storage/index/mbox/istream-raw-mbox.c | 821 + src/lib-storage/index/mbox/istream-raw-mbox.h | 56 + src/lib-storage/index/mbox/mbox-file.c | 207 + src/lib-storage/index/mbox/mbox-file.h | 16 + src/lib-storage/index/mbox/mbox-lock.c | 900 + src/lib-storage/index/mbox/mbox-lock.h | 15 + src/lib-storage/index/mbox/mbox-mail.c | 439 + src/lib-storage/index/mbox/mbox-md5-all.c | 39 + src/lib-storage/index/mbox/mbox-md5-apop3d.c | 119 + src/lib-storage/index/mbox/mbox-md5.h | 17 + src/lib-storage/index/mbox/mbox-save.c | 833 + src/lib-storage/index/mbox/mbox-settings.c | 55 + src/lib-storage/index/mbox/mbox-settings.h | 18 + src/lib-storage/index/mbox/mbox-storage.c | 911 + src/lib-storage/index/mbox/mbox-storage.h | 115 + .../index/mbox/mbox-sync-list-index.c | 109 + src/lib-storage/index/mbox/mbox-sync-parse.c | 616 + .../index/mbox/mbox-sync-private.h | 192 + .../index/mbox/mbox-sync-rewrite.c | 615 + src/lib-storage/index/mbox/mbox-sync-update.c | 466 + src/lib-storage/index/mbox/mbox-sync.c | 2066 + src/lib-storage/index/pop3c/Makefile.am | 28 + src/lib-storage/index/pop3c/Makefile.in | 837 + src/lib-storage/index/pop3c/pop3c-client.c | 902 + src/lib-storage/index/pop3c/pop3c-client.h | 86 + src/lib-storage/index/pop3c/pop3c-mail.c | 304 + src/lib-storage/index/pop3c/pop3c-settings.c | 116 + src/lib-storage/index/pop3c/pop3c-settings.h | 33 + src/lib-storage/index/pop3c/pop3c-storage.c | 368 + src/lib-storage/index/pop3c/pop3c-storage.h | 51 + src/lib-storage/index/pop3c/pop3c-sync.c | 361 + src/lib-storage/index/pop3c/pop3c-sync.h | 14 + src/lib-storage/index/raw/Makefile.am | 21 + src/lib-storage/index/raw/Makefile.in | 822 + src/lib-storage/index/raw/raw-mail.c | 152 + src/lib-storage/index/raw/raw-storage.c | 269 + src/lib-storage/index/raw/raw-storage.h | 41 + src/lib-storage/index/raw/raw-sync.c | 67 + src/lib-storage/index/raw/raw-sync.h | 9 + src/lib-storage/index/shared/Makefile.am | 19 + src/lib-storage/index/shared/Makefile.in | 817 + src/lib-storage/index/shared/shared-list.c | 310 + src/lib-storage/index/shared/shared-storage.c | 379 + src/lib-storage/index/shared/shared-storage.h | 22 + src/lib-storage/list/Makefile.am | 45 + src/lib-storage/list/Makefile.in | 916 + .../list/mail-storage-list-index-rebuild.c | 615 + src/lib-storage/list/mailbox-list-delete.c | 489 + src/lib-storage/list/mailbox-list-delete.h | 86 + src/lib-storage/list/mailbox-list-fs-flags.c | 243 + src/lib-storage/list/mailbox-list-fs-iter.c | 833 + src/lib-storage/list/mailbox-list-fs.c | 558 + src/lib-storage/list/mailbox-list-fs.h | 28 + .../list/mailbox-list-index-backend.c | 970 + .../list/mailbox-list-index-iter.c | 266 + .../list/mailbox-list-index-notify.c | 967 + .../list/mailbox-list-index-status.c | 862 + .../list/mailbox-list-index-storage.h | 21 + .../list/mailbox-list-index-sync.c | 521 + .../list/mailbox-list-index-sync.h | 35 + src/lib-storage/list/mailbox-list-index.c | 1234 + src/lib-storage/list/mailbox-list-index.h | 250 + .../list/mailbox-list-iter-private.h | 42 + src/lib-storage/list/mailbox-list-iter.c | 1168 + .../list/mailbox-list-maildir-iter.c | 524 + src/lib-storage/list/mailbox-list-maildir.c | 546 + src/lib-storage/list/mailbox-list-maildir.h | 29 + src/lib-storage/list/mailbox-list-none.c | 178 + .../list/mailbox-list-notify-tree.c | 131 + .../list/mailbox-list-notify-tree.h | 27 + .../list/mailbox-list-subscriptions.c | 318 + .../list/mailbox-list-subscriptions.h | 33 + src/lib-storage/list/subscription-file.c | 380 + src/lib-storage/list/subscription-file.h | 25 + src/lib-storage/mail-autoexpunge.c | 267 + src/lib-storage/mail-autoexpunge.h | 8 + src/lib-storage/mail-copy.c | 126 + src/lib-storage/mail-copy.h | 20 + src/lib-storage/mail-duplicate.c | 767 + src/lib-storage/mail-duplicate.h | 51 + src/lib-storage/mail-error.c | 34 + src/lib-storage/mail-error.h | 70 + src/lib-storage/mail-lua.c | 143 + src/lib-storage/mail-namespace.c | 866 + src/lib-storage/mail-namespace.h | 221 + src/lib-storage/mail-search-args-cmdline.c | 108 + src/lib-storage/mail-search-args-imap.c | 329 + src/lib-storage/mail-search-args-simplify.c | 921 + src/lib-storage/mail-search-build.c | 250 + src/lib-storage/mail-search-build.h | 59 + src/lib-storage/mail-search-mime-build.c | 173 + src/lib-storage/mail-search-mime-build.h | 44 + src/lib-storage/mail-search-mime-register.c | 547 + src/lib-storage/mail-search-mime-register.h | 30 + src/lib-storage/mail-search-mime.c | 609 + src/lib-storage/mail-search-mime.h | 146 + src/lib-storage/mail-search-parser-cmdline.c | 98 + src/lib-storage/mail-search-parser-imap.c | 122 + src/lib-storage/mail-search-parser-private.h | 22 + src/lib-storage/mail-search-parser.c | 49 + src/lib-storage/mail-search-parser.h | 34 + src/lib-storage/mail-search-register-human.c | 232 + src/lib-storage/mail-search-register-imap.c | 644 + src/lib-storage/mail-search-register.c | 89 + src/lib-storage/mail-search-register.h | 46 + src/lib-storage/mail-search.c | 818 + src/lib-storage/mail-search.h | 278 + src/lib-storage/mail-storage-hooks.c | 291 + src/lib-storage/mail-storage-hooks.h | 53 + src/lib-storage/mail-storage-lua-private.h | 31 + src/lib-storage/mail-storage-lua.c | 91 + src/lib-storage/mail-storage-lua.h | 17 + src/lib-storage/mail-storage-private.h | 913 + src/lib-storage/mail-storage-register.c | 31 + src/lib-storage/mail-storage-service.c | 1811 + src/lib-storage/mail-storage-service.h | 190 + src/lib-storage/mail-storage-settings.c | 809 + src/lib-storage/mail-storage-settings.h | 175 + src/lib-storage/mail-storage.c | 3288 + src/lib-storage/mail-storage.h | 1030 + src/lib-storage/mail-thread.c | 37 + src/lib-storage/mail-thread.h | 54 + src/lib-storage/mail-user-lua.c | 408 + src/lib-storage/mail-user.c | 865 + src/lib-storage/mail-user.h | 262 + src/lib-storage/mail.c | 713 + src/lib-storage/mailbox-attribute-internal.c | 149 + src/lib-storage/mailbox-attribute-internal.h | 14 + src/lib-storage/mailbox-attribute-lua.c | 163 + src/lib-storage/mailbox-attribute-private.h | 15 + src/lib-storage/mailbox-attribute.c | 587 + src/lib-storage/mailbox-attribute.h | 316 + src/lib-storage/mailbox-get.c | 239 + src/lib-storage/mailbox-guid-cache.c | 120 + src/lib-storage/mailbox-guid-cache.h | 8 + src/lib-storage/mailbox-header.c | 113 + src/lib-storage/mailbox-keywords.c | 148 + src/lib-storage/mailbox-list-iter.h | 89 + src/lib-storage/mailbox-list-notify.c | 42 + src/lib-storage/mailbox-list-notify.h | 67 + src/lib-storage/mailbox-list-private.h | 249 + src/lib-storage/mailbox-list-register.c | 26 + src/lib-storage/mailbox-list.c | 2164 + src/lib-storage/mailbox-list.h | 339 + src/lib-storage/mailbox-lua.c | 366 + src/lib-storage/mailbox-match-plugin.c | 83 + src/lib-storage/mailbox-match-plugin.h | 16 + src/lib-storage/mailbox-recent-flags.c | 106 + src/lib-storage/mailbox-recent-flags.h | 19 + .../mailbox-search-result-private.h | 41 + src/lib-storage/mailbox-search-result.c | 200 + src/lib-storage/mailbox-tree.c | 345 + src/lib-storage/mailbox-tree.h | 45 + src/lib-storage/mailbox-uidvalidity.c | 249 + src/lib-storage/mailbox-uidvalidity.h | 8 + src/lib-storage/mailbox-watch.c | 152 + src/lib-storage/mailbox-watch.h | 11 + src/lib-storage/test-mail-search-args-imap.c | 179 + .../test-mail-search-args-simplify.c | 416 + src/lib-storage/test-mail-storage-common.c | 118 + src/lib-storage/test-mail-storage-common.h | 30 + src/lib-storage/test-mail-storage.c | 652 + src/lib-storage/test-mail.c | 506 + src/lib-storage/test-mailbox-get.c | 162 + src/lib-storage/test-mailbox-list.c | 512 + src/lib-test/Makefile.am | 22 + src/lib-test/Makefile.in | 836 + src/lib-test/fuzzer.c | 87 + src/lib-test/fuzzer.h | 37 + src/lib-test/ostream-final-trickle.c | 148 + src/lib-test/ostream-final-trickle.h | 9 + src/lib-test/test-common.c | 465 + src/lib-test/test-common.h | 165 + src/lib-test/test-istream.c | 166 + src/lib-test/test-ostream.c | 194 + src/lib-test/test-subprocess.c | 392 + src/lib-test/test-subprocess.h | 41 + src/lib/Makefile.am | 481 + src/lib/Makefile.in | 3711 + src/lib/UnicodeData.txt | 30592 +++ src/lib/aqueue.c | 124 + src/lib/aqueue.h | 41 + src/lib/array-decl.h | 26 + src/lib/array.c | 166 + src/lib/array.h | 420 + src/lib/askpass.c | 72 + src/lib/askpass.h | 7 + src/lib/backtrace-string.c | 156 + src/lib/backtrace-string.h | 8 + src/lib/base32.c | 324 + src/lib/base32.h | 47 + src/lib/base64.c | 968 + src/lib/base64.h | 403 + src/lib/bits.c | 36 + src/lib/bits.h | 184 + src/lib/bsearch-insert-pos.c | 48 + src/lib/bsearch-insert-pos.h | 52 + src/lib/buffer-istream.c | 49 + src/lib/buffer.c | 495 + src/lib/buffer.h | 199 + src/lib/byteorder.h | 268 + src/lib/child-wait.c | 139 + src/lib/child-wait.h | 34 + src/lib/compat.c | 268 + src/lib/compat.h | 323 + src/lib/connection.c | 962 + src/lib/connection.h | 260 + src/lib/cpu-limit.c | 200 + src/lib/cpu-limit.h | 67 + src/lib/crc32.c | 91 + src/lib/crc32.h | 10 + src/lib/data-stack.c | 777 + src/lib/data-stack.h | 165 + src/lib/eacces-error.c | 310 + src/lib/eacces-error.h | 14 + src/lib/env-util.c | 140 + src/lib/env-util.h | 30 + src/lib/event-filter-lexer.c | 2297 + src/lib/event-filter-lexer.l | 141 + src/lib/event-filter-parser.c | 1852 + src/lib/event-filter-parser.h | 96 + src/lib/event-filter-parser.y | 195 + src/lib/event-filter-private.h | 121 + src/lib/event-filter.c | 855 + src/lib/event-filter.h | 64 + src/lib/event-log.c | 461 + src/lib/event-log.h | 151 + src/lib/execv-const.c | 33 + src/lib/execv-const.h | 9 + src/lib/failures-private.h | 26 + src/lib/failures.c | 998 + src/lib/failures.h | 157 + src/lib/fd-util.c | 166 + src/lib/fd-util.h | 26 + src/lib/fdatasync-path.c | 31 + src/lib/fdatasync-path.h | 7 + src/lib/fdpass.c | 212 + src/lib/fdpass.h | 15 + src/lib/file-cache.c | 336 + src/lib/file-cache.h | 37 + src/lib/file-copy.c | 125 + src/lib/file-copy.h | 12 + src/lib/file-create-locked.c | 193 + src/lib/file-create-locked.h | 47 + src/lib/file-dotlock.c | 925 + src/lib/file-dotlock.h | 94 + src/lib/file-lock.c | 530 + src/lib/file-lock.h | 87 + src/lib/file-set-size.c | 108 + src/lib/file-set-size.h | 13 + src/lib/fsync-mode.h | 14 + src/lib/guid.c | 174 + src/lib/guid.h | 52 + src/lib/hash-decl.h | 20 + src/lib/hash-format.c | 245 + src/lib/hash-format.h | 23 + src/lib/hash-method.c | 98 + src/lib/hash-method.h | 55 + src/lib/hash.c | 593 + src/lib/hash.h | 175 + src/lib/hash2.c | 242 + src/lib/hash2.h | 56 + src/lib/hex-binary.c | 85 + src/lib/hex-binary.h | 15 + src/lib/hex-dec.c | 38 + src/lib/hex-dec.h | 12 + src/lib/hmac-cram-md5.c | 65 + src/lib/hmac-cram-md5.h | 14 + src/lib/hmac.c | 152 + src/lib/hmac.h | 65 + src/lib/home-expand.c | 72 + src/lib/home-expand.h | 12 + src/lib/hook-build.c | 121 + src/lib/hook-build.h | 19 + src/lib/hostpid.c | 69 + src/lib/hostpid.h | 21 + src/lib/imem.c | 78 + src/lib/imem.h | 45 + src/lib/ioloop-epoll.c | 230 + src/lib/ioloop-iolist.c | 56 + src/lib/ioloop-iolist.h | 19 + src/lib/ioloop-kqueue.c | 175 + src/lib/ioloop-notify-fd.c | 55 + src/lib/ioloop-notify-fd.h | 28 + src/lib/ioloop-notify-inotify.c | 237 + src/lib/ioloop-notify-kqueue.c | 224 + src/lib/ioloop-notify-none.c | 33 + src/lib/ioloop-poll.c | 221 + src/lib/ioloop-private.h | 129 + src/lib/ioloop-select.c | 148 + src/lib/ioloop.c | 1389 + src/lib/ioloop.h | 323 + src/lib/iostream-private.h | 51 + src/lib/iostream-proxy.c | 173 + src/lib/iostream-proxy.h | 87 + src/lib/iostream-pump.c | 251 + src/lib/iostream-pump.h | 69 + src/lib/iostream-rawlog-private.h | 25 + src/lib/iostream-rawlog.c | 298 + src/lib/iostream-rawlog.h | 28 + src/lib/iostream-temp.c | 404 + src/lib/iostream-temp.h | 31 + src/lib/iostream.c | 154 + src/lib/iostream.h | 10 + src/lib/ipwd.c | 103 + src/lib/ipwd.h | 23 + src/lib/iso8601-date.c | 309 + src/lib/iso8601-date.h | 21 + src/lib/istream-base64-decoder.c | 171 + src/lib/istream-base64-encoder.c | 226 + src/lib/istream-base64.h | 16 + src/lib/istream-callback.c | 118 + src/lib/istream-callback.h | 39 + src/lib/istream-chain.c | 349 + src/lib/istream-chain.h | 21 + src/lib/istream-concat.c | 391 + src/lib/istream-concat.h | 7 + src/lib/istream-crlf.c | 208 + src/lib/istream-crlf.h | 9 + src/lib/istream-data.c | 62 + src/lib/istream-failure-at.c | 97 + src/lib/istream-failure-at.h | 11 + src/lib/istream-file-private.h | 23 + src/lib/istream-file.c | 282 + src/lib/istream-hash.c | 87 + src/lib/istream-hash.h | 12 + src/lib/istream-jsonstr.c | 217 + src/lib/istream-jsonstr.h | 7 + src/lib/istream-limit.c | 144 + src/lib/istream-multiplex.c | 298 + src/lib/istream-multiplex.h | 8 + src/lib/istream-private.h | 140 + src/lib/istream-rawlog.c | 119 + src/lib/istream-rawlog.h | 14 + src/lib/istream-seekable.c | 558 + src/lib/istream-seekable.h | 28 + src/lib/istream-sized.c | 232 + src/lib/istream-sized.h | 41 + src/lib/istream-tee.c | 258 + src/lib/istream-tee.h | 17 + src/lib/istream-timeout.c | 150 + src/lib/istream-timeout.h | 9 + src/lib/istream-try.c | 165 + src/lib/istream-try.h | 25 + src/lib/istream-unix.c | 113 + src/lib/istream-unix.h | 15 + src/lib/istream.c | 1316 + src/lib/istream.h | 255 + src/lib/json-parser.c | 850 + src/lib/json-parser.h | 61 + src/lib/json-tree.c | 173 + src/lib/json-tree.h | 62 + src/lib/lib-event-private.h | 114 + src/lib/lib-event.c | 1776 + src/lib/lib-event.h | 440 + src/lib/lib-signals.c | 702 + src/lib/lib-signals.h | 72 + src/lib/lib.c | 206 + src/lib/lib.h | 115 + src/lib/llist.h | 95 + src/lib/log-throttle.c | 78 + src/lib/log-throttle.h | 32 + src/lib/macros.h | 302 + src/lib/malloc-overflow.h | 54 + src/lib/md4.c | 300 + src/lib/md4.h | 33 + src/lib/md5.c | 314 + src/lib/md5.h | 33 + src/lib/memarea.c | 93 + src/lib/memarea.h | 31 + src/lib/mempool-allocfree.c | 330 + src/lib/mempool-alloconly.c | 546 + src/lib/mempool-datastack.c | 190 + src/lib/mempool-system.c | 163 + src/lib/mempool-unsafe-datastack.c | 135 + src/lib/mempool.c | 25 + src/lib/mempool.h | 179 + src/lib/mkdir-parents.c | 177 + src/lib/mkdir-parents.h | 33 + src/lib/mmap-anon.c | 183 + src/lib/mmap-util.c | 63 + src/lib/mmap-util.h | 42 + src/lib/module-context.h | 116 + src/lib/module-dir.c | 697 + src/lib/module-dir.h | 77 + src/lib/mountpoint.c | 336 + src/lib/mountpoint.h | 23 + src/lib/net.c | 1237 + src/lib/net.h | 199 + src/lib/nfs-workarounds.c | 406 + src/lib/nfs-workarounds.h | 40 + src/lib/numpack.c | 57 + src/lib/numpack.h | 11 + src/lib/ostream-buffer.c | 88 + src/lib/ostream-failure-at.c | 123 + src/lib/ostream-failure-at.h | 10 + src/lib/ostream-file-private.h | 45 + src/lib/ostream-file.c | 1154 + src/lib/ostream-hash.c | 56 + src/lib/ostream-hash.h | 12 + src/lib/ostream-multiplex.c | 367 + src/lib/ostream-multiplex.h | 8 + src/lib/ostream-null.c | 33 + src/lib/ostream-null.h | 7 + src/lib/ostream-private.h | 73 + src/lib/ostream-rawlog.c | 88 + src/lib/ostream-rawlog.h | 14 + src/lib/ostream-unix.c | 95 + src/lib/ostream-unix.h | 10 + src/lib/ostream-wrapper.c | 1259 + src/lib/ostream-wrapper.h | 165 + src/lib/ostream.c | 804 + src/lib/ostream.h | 260 + src/lib/path-util.c | 398 + src/lib/path-util.h | 69 + src/lib/pkcs5.c | 97 + src/lib/pkcs5.h | 35 + src/lib/primes.c | 48 + src/lib/primes.h | 8 + src/lib/printf-format-fix.c | 192 + src/lib/printf-format-fix.h | 15 + src/lib/priorityq.c | 171 + src/lib/priorityq.h | 39 + src/lib/process-stat.c | 267 + src/lib/process-stat.h | 26 + src/lib/process-title.c | 194 + src/lib/process-title.h | 19 + src/lib/rand.c | 101 + src/lib/randgen.c | 222 + src/lib/randgen.h | 17 + src/lib/read-full.c | 40 + src/lib/read-full.h | 9 + src/lib/restrict-access.c | 531 + src/lib/restrict-access.h | 90 + src/lib/restrict-process-size.c | 113 + src/lib/restrict-process-size.h | 25 + src/lib/safe-memset.c | 17 + src/lib/safe-memset.h | 8 + src/lib/safe-mkdir.c | 78 + src/lib/safe-mkdir.h | 10 + src/lib/safe-mkstemp.c | 106 + src/lib/safe-mkstemp.h | 15 + src/lib/sendfile-util.c | 137 + src/lib/sendfile-util.h | 16 + src/lib/seq-range-array.c | 569 + src/lib/seq-range-array.h | 82 + src/lib/seq-set-builder.c | 113 + src/lib/seq-set-builder.h | 15 + src/lib/sha-common.h | 12 + src/lib/sha1.c | 288 + src/lib/sha1.h | 84 + src/lib/sha2.c | 647 + src/lib/sha2.h | 89 + src/lib/sha3.c | 335 + src/lib/sha3.h | 75 + src/lib/sleep.c | 74 + src/lib/sleep.h | 30 + src/lib/sort.c | 17 + src/lib/sort.h | 33 + src/lib/stats-dist.c | 183 + src/lib/stats-dist.h | 40 + src/lib/str-find.c | 183 + src/lib/str-find.h | 20 + src/lib/str-sanitize.c | 165 + src/lib/str-sanitize.h | 22 + src/lib/str-table.c | 78 + src/lib/str-table.h | 19 + src/lib/str.c | 158 + src/lib/str.h | 100 + src/lib/strescape.c | 358 + src/lib/strescape.h | 43 + src/lib/strfuncs.c | 945 + src/lib/strfuncs.h | 170 + src/lib/strnum.c | 464 + src/lib/strnum.h | 192 + src/lib/test-aqueue.c | 73 + src/lib/test-array.c | 441 + src/lib/test-backtrace.c | 57 + src/lib/test-base32.c | 189 + src/lib/test-base64.c | 1317 + src/lib/test-bits.c | 281 + src/lib/test-bsearch-insert-pos.c | 46 + src/lib/test-buffer-istream.c | 101 + src/lib/test-buffer.c | 367 + src/lib/test-byteorder.c | 251 + src/lib/test-connection.c | 744 + src/lib/test-cpu-limit.c | 145 + src/lib/test-crc32.c | 14 + src/lib/test-data-stack.c | 455 + src/lib/test-env-util.c | 92 + src/lib/test-event-category-register.c | 320 + src/lib/test-event-filter-expr.c | 250 + src/lib/test-event-filter-merge.c | 67 + src/lib/test-event-filter-parser.c | 543 + src/lib/test-event-filter.c | 598 + src/lib/test-event-flatten.c | 391 + src/lib/test-event-log.c | 2528 + src/lib/test-failures.c | 176 + src/lib/test-fd-util.c | 24 + src/lib/test-file-cache.c | 293 + src/lib/test-file-create-locked.c | 142 + src/lib/test-guid.c | 259 + src/lib/test-hash-format.c | 54 + src/lib/test-hash-method.c | 495 + src/lib/test-hash.c | 47 + src/lib/test-hex-binary.c | 61 + src/lib/test-hmac.c | 302 + src/lib/test-imem.c | 61 + src/lib/test-ioloop.c | 404 + src/lib/test-iostream-proxy.c | 113 + src/lib/test-iostream-pump.c | 325 + src/lib/test-iostream-temp.c | 150 + src/lib/test-iso8601-date.c | 147 + src/lib/test-istream-base64-decoder.c | 337 + src/lib/test-istream-base64-encoder.c | 222 + src/lib/test-istream-chain.c | 199 + src/lib/test-istream-concat.c | 254 + src/lib/test-istream-crlf.c | 115 + src/lib/test-istream-failure-at.c | 49 + src/lib/test-istream-jsonstr.c | 139 + src/lib/test-istream-multiplex.c | 372 + src/lib/test-istream-seekable.c | 290 + src/lib/test-istream-sized.c | 111 + src/lib/test-istream-tee.c | 139 + src/lib/test-istream-try.c | 195 + src/lib/test-istream-unix.c | 187 + src/lib/test-istream.c | 381 + src/lib/test-json-parser.c | 436 + src/lib/test-json-tree.c | 113 + src/lib/test-lib-event.c | 96 + src/lib/test-lib-signals.c | 245 + src/lib/test-lib.c | 28 + src/lib/test-lib.h | 13 + src/lib/test-lib.inc | 112 + src/lib/test-llist.c | 177 + src/lib/test-log-throttle.c | 57 + src/lib/test-macros.c | 63 + src/lib/test-malloc-overflow.c | 132 + src/lib/test-memarea.c | 42 + src/lib/test-mempool-allocfree.c | 128 + src/lib/test-mempool-alloconly.c | 94 + src/lib/test-mempool.c | 117 + src/lib/test-multiplex.c | 167 + src/lib/test-net.c | 167 + src/lib/test-numpack.c | 64 + src/lib/test-ostream-buffer.c | 108 + src/lib/test-ostream-failure-at.c | 52 + src/lib/test-ostream-file.c | 189 + src/lib/test-ostream-multiplex.c | 405 + src/lib/test-path-util.c | 278 + src/lib/test-pkcs5.c | 49 + src/lib/test-primes.c | 24 + src/lib/test-printf-format-fix.c | 142 + src/lib/test-priorityq.c | 106 + src/lib/test-random.c | 67 + src/lib/test-seq-range-array.c | 419 + src/lib/test-seq-set-builder.c | 132 + src/lib/test-stats-dist.c | 132 + src/lib/test-str-find.c | 86 + src/lib/test-str-sanitize.c | 127 + src/lib/test-str-table.c | 33 + src/lib/test-str.c | 182 + src/lib/test-strescape.c | 197 + src/lib/test-strfuncs.c | 640 + src/lib/test-strnum.c | 398 + src/lib/test-time-util.c | 406 + src/lib/test-unichar.c | 185 + src/lib/test-uri.c | 807 + src/lib/test-utc-mktime.c | 61 + src/lib/test-var-expand.c | 474 + src/lib/test-wildcard-match.c | 48 + src/lib/time-util.c | 169 + src/lib/time-util.h | 108 + src/lib/unichar.c | 447 + src/lib/unichar.h | 145 + src/lib/unicodemap.c | 2474 + src/lib/unicodemap.pl | 162 + src/lib/unix-socket-create.c | 36 + src/lib/unix-socket-create.h | 7 + src/lib/unlink-directory.c | 283 + src/lib/unlink-directory.h | 21 + src/lib/unlink-old-files.c | 73 + src/lib/unlink-old-files.h | 9 + src/lib/uri-util.c | 1332 + src/lib/uri-util.h | 298 + src/lib/utc-mktime.c | 79 + src/lib/utc-mktime.h | 11 + src/lib/utc-offset.c | 38 + src/lib/utc-offset.h | 9 + src/lib/var-expand-if.c | 269 + src/lib/var-expand-private.h | 56 + src/lib/var-expand.c | 833 + src/lib/var-expand.h | 60 + src/lib/wildcard-match.c | 105 + src/lib/wildcard-match.h | 15 + src/lib/write-full.c | 54 + src/lib/write-full.h | 10 + src/lmtp/Makefile.am | 55 + src/lmtp/Makefile.in | 916 + src/lmtp/lmtp-client.c | 439 + src/lmtp/lmtp-client.h | 124 + src/lmtp/lmtp-commands.c | 340 + src/lmtp/lmtp-commands.h | 45 + src/lmtp/lmtp-common.h | 35 + src/lmtp/lmtp-local.c | 766 + src/lmtp/lmtp-local.h | 34 + src/lmtp/lmtp-proxy.c | 860 + src/lmtp/lmtp-proxy.h | 29 + src/lmtp/lmtp-recipient.c | 57 + src/lmtp/lmtp-recipient.h | 48 + src/lmtp/lmtp-settings.c | 205 + src/lmtp/lmtp-settings.h | 53 + src/lmtp/main.c | 173 + src/log/Makefile.am | 26 + src/log/Makefile.in | 825 + src/log/doveadm-connection.c | 86 + src/log/doveadm-connection.h | 6 + src/log/log-connection.c | 533 + src/log/log-connection.h | 15 + src/log/log-error-buffer.c | 122 + src/log/log-error-buffer.h | 24 + src/log/log-settings.c | 49 + src/log/main.c | 97 + src/login-common/Makefile.am | 40 + src/login-common/Makefile.in | 908 + src/login-common/access-lookup.c | 118 + src/login-common/access-lookup.h | 11 + src/login-common/client-common-auth.c | 953 + src/login-common/client-common.c | 1217 + src/login-common/client-common.h | 381 + src/login-common/login-common.h | 79 + src/login-common/login-proxy-state.c | 165 + src/login-common/login-proxy-state.h | 40 + src/login-common/login-proxy.c | 1173 + src/login-common/login-proxy.h | 120 + src/login-common/login-settings.c | 227 + src/login-common/login-settings.h | 50 + src/login-common/main.c | 571 + src/login-common/sasl-server.c | 604 + src/login-common/sasl-server.h | 41 + src/master/Makefile.am | 99 + src/master/Makefile.in | 971 + src/master/capabilities-posix.c | 35 + src/master/capabilities.h | 14 + src/master/common.h | 27 + src/master/dup2-array.c | 78 + src/master/dup2-array.h | 13 + src/master/main.c | 941 + src/master/master-client.c | 191 + src/master/master-client.h | 9 + src/master/master-settings.c | 806 + src/master/master-settings.h | 35 + src/master/service-anvil.c | 202 + src/master/service-anvil.h | 36 + src/master/service-listen.c | 492 + src/master/service-listen.h | 18 + src/master/service-log.c | 169 + src/master/service-log.h | 13 + src/master/service-monitor.c | 845 + src/master/service-monitor.h | 18 + src/master/service-process-notify.c | 101 + src/master/service-process-notify.h | 15 + src/master/service-process.c | 676 + src/master/service-process.h | 56 + src/master/service.c | 769 + src/master/service.h | 220 + src/master/test-auth-client.c | 1287 + src/master/test-auth-master.c | 1390 + src/master/test-master-login-auth.c | 994 + src/old-stats/Makefile.am | 48 + src/old-stats/Makefile.in | 882 + src/old-stats/client-export.c | 657 + src/old-stats/client-export.h | 9 + src/old-stats/client-reset.c | 21 + src/old-stats/client-reset.h | 9 + src/old-stats/client.c | 193 + src/old-stats/client.h | 35 + src/old-stats/fifo-input-connection.c | 108 + src/old-stats/fifo-input-connection.h | 9 + src/old-stats/global-memory.c | 46 + src/old-stats/global-memory.h | 9 + src/old-stats/mail-command.c | 247 + src/old-stats/mail-command.h | 18 + src/old-stats/mail-domain.c | 133 + src/old-stats/mail-domain.h | 22 + src/old-stats/mail-ip.c | 129 + src/old-stats/mail-ip.h | 19 + src/old-stats/mail-session.c | 343 + src/old-stats/mail-session.h | 28 + src/old-stats/mail-stats.c | 86 + src/old-stats/mail-stats.h | 123 + src/old-stats/mail-user.c | 177 + src/old-stats/mail-user.h | 23 + src/old-stats/main.c | 95 + src/old-stats/stats-carbon.c | 125 + src/old-stats/stats-carbon.h | 13 + src/old-stats/stats-settings.c | 104 + src/old-stats/stats-settings.h | 22 + src/plugins/Makefile.am | 53 + src/plugins/Makefile.in | 810 + src/plugins/acl/Makefile.am | 78 + src/plugins/acl/Makefile.in | 1035 + src/plugins/acl/acl-api-private.h | 135 + src/plugins/acl/acl-api.c | 847 + src/plugins/acl/acl-api.h | 167 + src/plugins/acl/acl-attributes.c | 233 + src/plugins/acl/acl-backend-vfile-acllist.c | 424 + src/plugins/acl/acl-backend-vfile-update.c | 260 + src/plugins/acl/acl-backend-vfile.c | 659 + src/plugins/acl/acl-backend-vfile.h | 88 + src/plugins/acl/acl-backend.c | 194 + src/plugins/acl/acl-cache.c | 395 + src/plugins/acl/acl-cache.h | 57 + src/plugins/acl/acl-global-file.c | 246 + src/plugins/acl/acl-global-file.h | 23 + src/plugins/acl/acl-lookup-dict.c | 373 + src/plugins/acl/acl-lookup-dict.h | 17 + src/plugins/acl/acl-mailbox-list.c | 633 + src/plugins/acl/acl-mailbox.c | 714 + src/plugins/acl/acl-plugin.c | 27 + src/plugins/acl/acl-plugin.h | 73 + src/plugins/acl/acl-shared-storage.c | 103 + src/plugins/acl/acl-shared-storage.h | 6 + src/plugins/acl/acl-storage.c | 62 + src/plugins/acl/acl-storage.h | 50 + src/plugins/acl/doveadm-acl.c | 629 + src/plugins/acl/test-acl.c | 66 + src/plugins/apparmor/Makefile.am | 14 + src/plugins/apparmor/Makefile.in | 816 + src/plugins/apparmor/apparmor-plugin.c | 111 + src/plugins/charset-alias/Makefile.am | 19 + src/plugins/charset-alias/Makefile.in | 822 + .../charset-alias/charset-alias-plugin.c | 198 + .../charset-alias/charset-alias-plugin.h | 7 + src/plugins/fs-compress/Makefile.am | 14 + src/plugins/fs-compress/Makefile.in | 811 + src/plugins/fs-compress/fs-compress.c | 285 + src/plugins/fts-lucene/Makefile.am | 61 + src/plugins/fts-lucene/Makefile.in | 990 + src/plugins/fts-lucene/Snowball.cc | 151 + src/plugins/fts-lucene/SnowballAnalyzer.h | 51 + src/plugins/fts-lucene/SnowballFilter.h | 42 + src/plugins/fts-lucene/doveadm-fts-lucene.c | 70 + src/plugins/fts-lucene/fts-backend-lucene.c | 605 + src/plugins/fts-lucene/fts-lucene-plugin.c | 146 + src/plugins/fts-lucene/fts-lucene-plugin.h | 36 + src/plugins/fts-lucene/lucene-wrapper.cc | 1639 + src/plugins/fts-lucene/lucene-wrapper.h | 67 + src/plugins/fts-lucene/textcat.conf | 25 + src/plugins/fts-solr/Makefile.am | 64 + src/plugins/fts-solr/Makefile.in | 965 + src/plugins/fts-solr/fts-backend-solr-old.c | 879 + src/plugins/fts-solr/fts-backend-solr.c | 984 + src/plugins/fts-solr/fts-solr-plugin.c | 131 + src/plugins/fts-solr/fts-solr-plugin.h | 35 + src/plugins/fts-solr/solr-connection.c | 327 + src/plugins/fts-solr/solr-connection.h | 26 + src/plugins/fts-solr/solr-response.c | 372 + src/plugins/fts-solr/solr-response.h | 23 + src/plugins/fts-solr/test-solr-response.c | 295 + src/plugins/fts-squat/Makefile.am | 47 + src/plugins/fts-squat/Makefile.in | 883 + src/plugins/fts-squat/fts-backend-squat.c | 497 + src/plugins/fts-squat/fts-squat-plugin.c | 18 + src/plugins/fts-squat/fts-squat-plugin.h | 14 + src/plugins/fts-squat/squat-test.c | 197 + src/plugins/fts-squat/squat-trie-private.h | 192 + src/plugins/fts-squat/squat-trie.c | 2096 + src/plugins/fts-squat/squat-trie.h | 54 + src/plugins/fts-squat/squat-uidlist.c | 1624 + src/plugins/fts-squat/squat-uidlist.h | 71 + src/plugins/fts/Makefile.am | 74 + src/plugins/fts/Makefile.in | 1140 + src/plugins/fts/decode2text.sh | 105 + .../fts/doveadm-dump-fts-expunge-log.c | 116 + src/plugins/fts/doveadm-fts.c | 472 + src/plugins/fts/doveadm-fts.h | 11 + src/plugins/fts/fts-api-private.h | 139 + src/plugins/fts/fts-api.c | 554 + src/plugins/fts/fts-api.h | 173 + src/plugins/fts/fts-build-mail.c | 719 + src/plugins/fts/fts-build-mail.h | 9 + src/plugins/fts/fts-expunge-log.c | 617 + src/plugins/fts/fts-expunge-log.h | 58 + src/plugins/fts/fts-indexer.c | 300 + src/plugins/fts/fts-indexer.h | 22 + src/plugins/fts/fts-parser-html.c | 64 + src/plugins/fts/fts-parser-script.c | 277 + src/plugins/fts/fts-parser-tika.c | 278 + src/plugins/fts/fts-parser.c | 127 + src/plugins/fts/fts-parser.h | 48 + src/plugins/fts/fts-plugin.c | 33 + src/plugins/fts/fts-plugin.h | 7 + src/plugins/fts/fts-search-args.c | 426 + src/plugins/fts/fts-search-args.h | 7 + src/plugins/fts/fts-search-serialize.c | 99 + src/plugins/fts/fts-search-serialize.h | 16 + src/plugins/fts/fts-search.c | 385 + src/plugins/fts/fts-storage.c | 981 + src/plugins/fts/fts-storage.h | 70 + src/plugins/fts/fts-user.c | 412 + src/plugins/fts/fts-user.h | 25 + src/plugins/fts/xml2text.c | 44 + src/plugins/imap-acl/Makefile.am | 31 + src/plugins/imap-acl/Makefile.in | 831 + src/plugins/imap-acl/imap-acl-plugin.c | 1128 + src/plugins/imap-acl/imap-acl-plugin.h | 12 + src/plugins/imap-old-stats/Makefile.am | 28 + src/plugins/imap-old-stats/Makefile.in | 827 + .../imap-old-stats/imap-stats-plugin.c | 128 + .../imap-old-stats/imap-stats-plugin.h | 12 + src/plugins/imap-quota/Makefile.am | 27 + src/plugins/imap-quota/Makefile.in | 827 + src/plugins/imap-quota/imap-quota-plugin.c | 266 + src/plugins/imap-quota/imap-quota-plugin.h | 12 + src/plugins/imap-zlib/Makefile.am | 25 + src/plugins/imap-zlib/Makefile.in | 827 + src/plugins/imap-zlib/imap-zlib-plugin.c | 184 + src/plugins/imap-zlib/imap-zlib-plugin.h | 12 + src/plugins/last-login/Makefile.am | 19 + src/plugins/last-login/Makefile.in | 822 + src/plugins/last-login/last-login-plugin.c | 157 + src/plugins/last-login/last-login-plugin.h | 7 + src/plugins/lazy-expunge/Makefile.am | 21 + src/plugins/lazy-expunge/Makefile.in | 824 + .../lazy-expunge/lazy-expunge-plugin.c | 654 + .../lazy-expunge/lazy-expunge-plugin.h | 7 + src/plugins/listescape/Makefile.am | 18 + src/plugins/listescape/Makefile.in | 821 + src/plugins/listescape/listescape-plugin.c | 36 + src/plugins/listescape/listescape-plugin.h | 7 + src/plugins/mail-crypt/Makefile.am | 116 + src/plugins/mail-crypt/Makefile.in | 1200 + src/plugins/mail-crypt/doveadm-mail-crypt.c | 1048 + src/plugins/mail-crypt/fs-crypt-common.c | 368 + src/plugins/mail-crypt/fs-crypt-settings.c | 35 + src/plugins/mail-crypt/fs-crypt-settings.h | 11 + src/plugins/mail-crypt/fs-crypt.c | 65 + src/plugins/mail-crypt/fs-mail-crypt.c | 72 + .../mail-crypt/mail-crypt-acl-plugin.c | 431 + src/plugins/mail-crypt/mail-crypt-common.h | 30 + .../mail-crypt/mail-crypt-global-key.c | 172 + .../mail-crypt/mail-crypt-global-key.h | 38 + src/plugins/mail-crypt/mail-crypt-key.c | 1242 + src/plugins/mail-crypt/mail-crypt-key.h | 119 + src/plugins/mail-crypt/mail-crypt-plugin.c | 501 + src/plugins/mail-crypt/mail-crypt-plugin.h | 32 + src/plugins/mail-crypt/mail-crypt-pluginenv.c | 106 + src/plugins/mail-crypt/mail-crypt-userenv.c | 66 + src/plugins/mail-crypt/test-mail-global-key.c | 130 + src/plugins/mail-crypt/test-mail-key.c | 424 + src/plugins/mail-log/Makefile.am | 24 + src/plugins/mail-log/Makefile.in | 826 + src/plugins/mail-log/mail-log-plugin.c | 546 + src/plugins/mail-log/mail-log-plugin.h | 9 + src/plugins/mail-lua/Makefile.am | 32 + src/plugins/mail-lua/Makefile.in | 873 + src/plugins/mail-lua/mail-lua-plugin.c | 167 + src/plugins/mail-lua/mail-lua-plugin.h | 14 + src/plugins/mailbox-alias/Makefile.am | 18 + src/plugins/mailbox-alias/Makefile.in | 821 + .../mailbox-alias/mailbox-alias-plugin.c | 356 + .../mailbox-alias/mailbox-alias-plugin.h | 7 + src/plugins/notify-status/Makefile.am | 17 + src/plugins/notify-status/Makefile.in | 817 + .../notify-status/notify-status-plugin.c | 363 + src/plugins/notify/Makefile.am | 25 + src/plugins/notify/Makefile.in | 852 + src/plugins/notify/notify-plugin-private.h | 29 + src/plugins/notify/notify-plugin.c | 265 + src/plugins/notify/notify-plugin.h | 43 + src/plugins/notify/notify-storage.c | 269 + src/plugins/old-stats/Makefile.am | 33 + src/plugins/old-stats/Makefile.in | 898 + src/plugins/old-stats/mail-stats-connection.c | 75 + src/plugins/old-stats/mail-stats-connection.h | 19 + src/plugins/old-stats/mail-stats-fill.c | 156 + src/plugins/old-stats/mail-stats.c | 168 + src/plugins/old-stats/mail-stats.h | 41 + src/plugins/old-stats/stats-plugin.c | 481 + src/plugins/old-stats/stats-plugin.h | 60 + src/plugins/pop3-migration/Makefile.am | 41 + src/plugins/pop3-migration/Makefile.in | 872 + .../pop3-migration/pop3-migration-plugin.c | 1058 + .../pop3-migration/pop3-migration-plugin.h | 13 + .../test-pop3-migration-plugin.c | 63 + src/plugins/push-notification/Makefile.am | 83 + src/plugins/push-notification/Makefile.in | 1037 + .../push-notification-driver-dlog.c | 114 + .../push-notification-driver-lua.c | 663 + .../push-notification-driver-ox.c | 470 + .../push-notification-drivers.c | 181 + .../push-notification-drivers.h | 123 + .../push-notification-event-flagsclear.c | 170 + .../push-notification-event-flagsclear.h | 22 + .../push-notification-event-flagsset.c | 167 + .../push-notification-event-flagsset.h | 22 + .../push-notification-event-mailboxcreate.c | 56 + .../push-notification-event-mailboxcreate.h | 12 + .../push-notification-event-mailboxdelete.c | 46 + .../push-notification-event-mailboxdelete.h | 12 + .../push-notification-event-mailboxrename.c | 50 + .../push-notification-event-mailboxrename.h | 11 + ...push-notification-event-mailboxsubscribe.c | 48 + ...push-notification-event-mailboxsubscribe.h | 12 + ...sh-notification-event-mailboxunsubscribe.c | 48 + ...sh-notification-event-mailboxunsubscribe.h | 12 + .../push-notification-event-message-common.c | 117 + .../push-notification-event-message-common.h | 40 + .../push-notification-event-messageappend.c | 99 + .../push-notification-event-messageappend.h | 30 + .../push-notification-event-messageexpunge.c | 53 + .../push-notification-event-messageexpunge.h | 12 + .../push-notification-event-messagenew.c | 97 + .../push-notification-event-messagenew.h | 36 + .../push-notification-event-messageread.c | 58 + .../push-notification-event-messageread.h | 11 + .../push-notification-event-messagetrash.c | 58 + .../push-notification-event-messagetrash.h | 12 + .../push-notification-events-rfc5423.c | 59 + .../push-notification-events-rfc5423.h | 10 + .../push-notification-events.c | 100 + .../push-notification-events.h | 124 + .../push-notification-plugin.c | 390 + .../push-notification-plugin.h | 18 + .../push-notification-triggers.c | 215 + .../push-notification-triggers.h | 64 + .../push-notification-txn-mbox.c | 90 + .../push-notification-txn-mbox.h | 29 + .../push-notification-txn-msg.c | 139 + .../push-notification-txn-msg.h | 39 + src/plugins/quota-clone/Makefile.am | 19 + src/plugins/quota-clone/Makefile.in | 822 + src/plugins/quota-clone/quota-clone-plugin.c | 308 + src/plugins/quota-clone/quota-clone-plugin.h | 7 + src/plugins/quota/Makefile.am | 148 + src/plugins/quota/Makefile.in | 1183 + src/plugins/quota/doveadm-quota.c | 165 + src/plugins/quota/quota-count.c | 400 + src/plugins/quota/quota-dict.c | 269 + src/plugins/quota/quota-dirsize.c | 232 + src/plugins/quota/quota-fs.c | 970 + src/plugins/quota/quota-fs.h | 51 + src/plugins/quota/quota-imapc.c | 494 + src/plugins/quota/quota-maildir.c | 953 + src/plugins/quota/quota-plugin.c | 31 + src/plugins/quota/quota-plugin.h | 36 + src/plugins/quota/quota-private.h | 230 + src/plugins/quota/quota-status-settings.c | 37 + src/plugins/quota/quota-status-settings.h | 10 + src/plugins/quota/quota-status.c | 360 + src/plugins/quota/quota-storage.c | 780 + src/plugins/quota/quota-util.c | 465 + src/plugins/quota/quota.c | 1543 + src/plugins/quota/quota.h | 147 + src/plugins/quota/rquota-pragmas.h | 4 + src/plugins/quota/rquota.x | 139 + src/plugins/quota/test-quota-util.c | 96 + src/plugins/replication/Makefile.am | 25 + src/plugins/replication/Makefile.in | 827 + src/plugins/replication/replication-plugin.c | 404 + src/plugins/replication/replication-plugin.h | 9 + src/plugins/trash/Makefile.am | 23 + src/plugins/trash/Makefile.in | 824 + src/plugins/trash/trash-plugin.c | 392 + src/plugins/trash/trash-plugin.h | 9 + src/plugins/var-expand-crypt/Makefile.am | 39 + src/plugins/var-expand-crypt/Makefile.in | 938 + .../var-expand-crypt/test-var-expand-crypt.c | 102 + .../var-expand-crypt-plugin.c | 335 + src/plugins/virtual/Makefile.am | 29 + src/plugins/virtual/Makefile.in | 859 + src/plugins/virtual/virtual-config.c | 567 + src/plugins/virtual/virtual-mail.c | 583 + src/plugins/virtual/virtual-plugin.c | 25 + src/plugins/virtual/virtual-plugin.h | 7 + src/plugins/virtual/virtual-save.c | 153 + src/plugins/virtual/virtual-search.c | 206 + src/plugins/virtual/virtual-storage.c | 953 + src/plugins/virtual/virtual-storage.h | 251 + src/plugins/virtual/virtual-sync.c | 1973 + src/plugins/virtual/virtual-transaction.c | 87 + src/plugins/virtual/virtual-transaction.h | 24 + src/plugins/welcome/Makefile.am | 14 + src/plugins/welcome/Makefile.in | 814 + src/plugins/welcome/welcome-plugin.c | 135 + src/plugins/zlib/Makefile.am | 24 + src/plugins/zlib/Makefile.in | 827 + src/plugins/zlib/zlib-plugin.c | 388 + src/plugins/zlib/zlib-plugin.h | 7 + src/pop3-login/Makefile.am | 34 + src/pop3-login/Makefile.in | 830 + src/pop3-login/client-authenticate.c | 247 + src/pop3-login/client-authenticate.h | 15 + src/pop3-login/client.c | 395 + src/pop3-login/client.h | 40 + src/pop3-login/pop3-login-settings.c | 75 + src/pop3-login/pop3-login-settings.h | 6 + src/pop3-login/pop3-proxy.c | 320 + src/pop3-login/pop3-proxy.h | 12 + src/pop3/Makefile.am | 39 + src/pop3/Makefile.in | 887 + src/pop3/main.c | 433 + src/pop3/pop3-capability.h | 14 + src/pop3/pop3-client.c | 869 + src/pop3/pop3-client.h | 146 + src/pop3/pop3-commands.c | 956 + src/pop3/pop3-commands.h | 13 + src/pop3/pop3-common.h | 27 + src/pop3/pop3-settings.c | 184 + src/pop3/pop3-settings.h | 40 + src/replication/Makefile.am | 4 + src/replication/Makefile.in | 773 + src/replication/aggregator/Makefile.am | 29 + src/replication/aggregator/Makefile.in | 828 + .../aggregator/aggregator-settings.c | 85 + .../aggregator/aggregator-settings.h | 12 + src/replication/aggregator/aggregator.c | 74 + .../aggregator/notify-connection.c | 154 + .../aggregator/notify-connection.h | 9 + .../aggregator/replicator-connection.c | 326 + .../aggregator/replicator-connection.h | 25 + src/replication/replication-common.h | 48 + src/replication/replicator/Makefile.am | 60 + src/replication/replicator/Makefile.in | 897 + .../replicator/doveadm-connection.c | 354 + .../replicator/doveadm-connection.h | 11 + src/replication/replicator/dsync-client.c | 274 + src/replication/replicator/dsync-client.h | 37 + .../replicator/notify-connection.c | 206 + .../replicator/notify-connection.h | 13 + src/replication/replicator/replicator-brain.c | 202 + src/replication/replicator/replicator-brain.h | 20 + .../replicator/replicator-queue-auth.c | 37 + src/replication/replicator/replicator-queue.c | 527 + src/replication/replicator/replicator-queue.h | 104 + .../replicator/replicator-settings.c | 86 + .../replicator/replicator-settings.h | 16 + src/replication/replicator/replicator.c | 117 + .../replicator/test-replicator-queue.c | 260 + src/stats/Makefile.am | 102 + src/stats/Makefile.in | 1024 + src/stats/client-http.c | 233 + src/stats/client-http.h | 28 + src/stats/client-reader.c | 253 + src/stats/client-reader.h | 11 + src/stats/client-writer.c | 373 + src/stats/client-writer.h | 13 + src/stats/event-exporter-fmt-json.c | 249 + src/stats/event-exporter-fmt-none.c | 12 + src/stats/event-exporter-fmt-tab-text.c | 212 + src/stats/event-exporter-fmt.c | 78 + src/stats/event-exporter-transport-drop.c | 9 + .../event-exporter-transport-http-post.c | 76 + src/stats/event-exporter-transport-log.c | 12 + src/stats/event-exporter.h | 31 + src/stats/main.c | 117 + src/stats/stats-common.h | 10 + src/stats/stats-event-category.c | 32 + src/stats/stats-event-category.h | 12 + src/stats/stats-metrics.c | 765 + src/stats/stats-metrics.h | 134 + src/stats/stats-service-openmetrics.c | 826 + src/stats/stats-service-private.h | 8 + src/stats/stats-service.c | 15 + src/stats/stats-service.h | 7 + src/stats/stats-settings.c | 538 + src/stats/stats-settings.h | 125 + src/stats/test-client-reader.c | 235 + src/stats/test-client-writer.c | 152 + src/stats/test-stats-common.c | 99 + src/stats/test-stats-common.h | 36 + src/stats/test-stats-metrics.c | 449 + src/submission-login/Makefile.am | 32 + src/submission-login/Makefile.in | 830 + src/submission-login/client-authenticate.c | 360 + src/submission-login/client-authenticate.h | 21 + src/submission-login/client.c | 329 + src/submission-login/client.h | 38 + .../submission-login-settings.c | 166 + .../submission-login-settings.h | 24 + src/submission-login/submission-proxy.c | 709 + src/submission-login/submission-proxy.h | 12 + src/submission/Makefile.am | 55 + src/submission/Makefile.in | 918 + src/submission/main.c | 436 + src/submission/submission-backend-relay.c | 1260 + src/submission/submission-backend-relay.h | 64 + src/submission/submission-backend.c | 448 + src/submission/submission-backend.h | 170 + src/submission/submission-client.c | 555 + src/submission/submission-client.h | 161 + src/submission/submission-commands.c | 615 + src/submission/submission-commands.h | 98 + src/submission/submission-common.h | 46 + src/submission/submission-recipient.c | 55 + src/submission/submission-recipient.h | 33 + src/submission/submission-settings.c | 225 + src/submission/submission-settings.h | 60 + src/util/Makefile.am | 90 + src/util/Makefile.in | 1049 + src/util/dovecot-sysreport | 216 + src/util/gdbhelper.c | 71 + src/util/health-check-settings.c | 31 + src/util/health-check.sh | 32 + src/util/maildirlock.c | 106 + src/util/rawlog.c | 428 + src/util/script-login.c | 249 + src/util/script.c | 321 + src/util/tcpwrap-settings.c | 35 + src/util/tcpwrap.c | 131 + src/util/test-fs.c | 449 + stamp.h.in | 0 update-version.sh | 68 + ylwrap | 247 + 2922 files changed, 1088891 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 COPYING.LGPL create mode 100644 COPYING.MIT create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 INSTALL.md create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 README.md create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 compile create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.rpath create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.ac create mode 100755 depcomp create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.in create mode 100644 doc/documentation.txt create mode 100644 doc/dovecot-initd.sh create mode 100644 doc/dovecot-openssl.cnf create mode 100644 doc/example-config/Makefile.am create mode 100644 doc/example-config/Makefile.in create mode 100644 doc/example-config/README.in create mode 100644 doc/example-config/conf.d/10-auth.conf create mode 100644 doc/example-config/conf.d/10-director.conf create mode 100644 doc/example-config/conf.d/10-logging.conf create mode 100644 doc/example-config/conf.d/10-mail.conf create mode 100644 doc/example-config/conf.d/10-master.conf create mode 100644 doc/example-config/conf.d/10-metrics.conf create mode 100644 doc/example-config/conf.d/10-ssl.conf create mode 100644 doc/example-config/conf.d/15-lda.conf create mode 100644 doc/example-config/conf.d/15-mailboxes.conf create mode 100644 doc/example-config/conf.d/20-imap.conf create mode 100644 doc/example-config/conf.d/20-lmtp.conf create mode 100644 doc/example-config/conf.d/20-pop3.conf create mode 100644 doc/example-config/conf.d/20-submission.conf create mode 100644 doc/example-config/conf.d/90-acl.conf create mode 100644 doc/example-config/conf.d/90-plugin.conf create mode 100644 doc/example-config/conf.d/90-quota.conf create mode 100644 doc/example-config/conf.d/Makefile.am create mode 100644 doc/example-config/conf.d/Makefile.in create mode 100644 doc/example-config/conf.d/auth-checkpassword.conf.ext create mode 100644 doc/example-config/conf.d/auth-deny.conf.ext create mode 100644 doc/example-config/conf.d/auth-dict.conf.ext create mode 100644 doc/example-config/conf.d/auth-ldap.conf.ext create mode 100644 doc/example-config/conf.d/auth-master.conf.ext create mode 100644 doc/example-config/conf.d/auth-passwdfile.conf.ext create mode 100644 doc/example-config/conf.d/auth-sql.conf.ext create mode 100644 doc/example-config/conf.d/auth-static.conf.ext create mode 100644 doc/example-config/conf.d/auth-system.conf.ext create mode 100644 doc/example-config/dovecot-dict-auth.conf.ext create mode 100644 doc/example-config/dovecot-dict-sql.conf.ext create mode 100644 doc/example-config/dovecot-ldap.conf.ext create mode 100644 doc/example-config/dovecot-oauth2.conf.ext create mode 100644 doc/example-config/dovecot-sql.conf.ext create mode 100644 doc/example-config/dovecot.conf create mode 100644 doc/man/Makefile.am create mode 100644 doc/man/Makefile.in create mode 100644 doc/man/deliver.1 create mode 100644 doc/man/doveadm-acl.1.in create mode 100644 doc/man/doveadm-altmove.1.in create mode 100644 doc/man/doveadm-auth.1.in create mode 100644 doc/man/doveadm-backup.1 create mode 100644 doc/man/doveadm-batch.1.in create mode 100644 doc/man/doveadm-config.1 create mode 100644 doc/man/doveadm-copy.1 create mode 100644 doc/man/doveadm-deduplicate.1.in create mode 100644 doc/man/doveadm-director.1.in create mode 100644 doc/man/doveadm-dump.1.in create mode 100644 doc/man/doveadm-exec.1.in create mode 100644 doc/man/doveadm-expunge.1.in create mode 100644 doc/man/doveadm-fetch.1.in create mode 100644 doc/man/doveadm-flags.1.in create mode 100644 doc/man/doveadm-force-resync.1.in create mode 100644 doc/man/doveadm-fs.1.in create mode 100644 doc/man/doveadm-fts.1.in create mode 100644 doc/man/doveadm-help.1.in create mode 100644 doc/man/doveadm-import.1.in create mode 100644 doc/man/doveadm-index.1.in create mode 100644 doc/man/doveadm-instance.1.in create mode 100644 doc/man/doveadm-kick.1.in create mode 100644 doc/man/doveadm-log.1.in create mode 100644 doc/man/doveadm-mailbox-cryptokey.1.in create mode 100644 doc/man/doveadm-mailbox.1.in create mode 100644 doc/man/doveadm-move.1.in create mode 100644 doc/man/doveadm-penalty.1.in create mode 100644 doc/man/doveadm-proxy.1.in create mode 100644 doc/man/doveadm-purge.1.in create mode 100644 doc/man/doveadm-pw.1.in create mode 100644 doc/man/doveadm-quota.1.in create mode 100644 doc/man/doveadm-rebuild.1.in create mode 100644 doc/man/doveadm-reload.1 create mode 100644 doc/man/doveadm-replicator.1.in create mode 100644 doc/man/doveadm-save.1.in create mode 100644 doc/man/doveadm-search-query.7 create mode 100644 doc/man/doveadm-search.1.in create mode 100644 doc/man/doveadm-stats.1.in create mode 100644 doc/man/doveadm-stop.1 create mode 100644 doc/man/doveadm-sync.1.in create mode 100644 doc/man/doveadm-user.1.in create mode 100644 doc/man/doveadm-who.1.in create mode 100644 doc/man/doveadm.1.in create mode 100644 doc/man/doveconf.1.in create mode 100644 doc/man/dovecot-lda.1.in create mode 100644 doc/man/dovecot-sysreport.1.in create mode 100644 doc/man/dovecot.1.in create mode 100644 doc/man/dsync.1 create mode 100644 doc/man/global-options-formatter.inc create mode 100644 doc/man/global-options.inc create mode 100644 doc/man/option-A.inc create mode 100644 doc/man/option-F-file.inc create mode 100644 doc/man/option-S-socket.inc create mode 100644 doc/man/option-u-user.inc create mode 100644 doc/man/reporting-bugs.inc create mode 100644 doc/man/sed.sh create mode 100644 doc/mkcert.sh create mode 100644 doc/securecoding.txt create mode 100644 doc/solr-config-7.7.0.xml create mode 100644 doc/solr-schema-7.7.0.xml create mode 100644 doc/solr-schema.xml create mode 100644 doc/thread-refs.txt create mode 100644 doc/wiki/ACL.txt create mode 100644 doc/wiki/AixPluginsSupport.txt create mode 100644 doc/wiki/AttachmentIndicator.txt create mode 100644 doc/wiki/AuthDatabase.CheckPassword.txt create mode 100644 doc/wiki/AuthDatabase.Dict.txt create mode 100644 doc/wiki/AuthDatabase.LDAP.AuthBinds.txt create mode 100644 doc/wiki/AuthDatabase.LDAP.PasswordLookups.txt create mode 100644 doc/wiki/AuthDatabase.LDAP.Userdb.txt create mode 100644 doc/wiki/AuthDatabase.LDAP.txt create mode 100644 doc/wiki/AuthDatabase.Lua.txt create mode 100644 doc/wiki/AuthDatabase.Passwd.txt create mode 100644 doc/wiki/AuthDatabase.PasswdFile.txt create mode 100644 doc/wiki/AuthDatabase.SQL.txt create mode 100644 doc/wiki/AuthDatabase.VPopMail.txt create mode 100644 doc/wiki/AuthDatabase.txt create mode 100644 doc/wiki/Authentication.Caching.txt create mode 100644 doc/wiki/Authentication.Kerberos.txt create mode 100644 doc/wiki/Authentication.MasterUsers.txt create mode 100644 doc/wiki/Authentication.Mechanisms.DigestMD5.txt create mode 100644 doc/wiki/Authentication.Mechanisms.NTLM.txt create mode 100644 doc/wiki/Authentication.Mechanisms.Winbind.txt create mode 100644 doc/wiki/Authentication.Mechanisms.txt create mode 100644 doc/wiki/Authentication.MultipleDatabases.txt create mode 100644 doc/wiki/Authentication.PasswordSchemes.txt create mode 100644 doc/wiki/Authentication.Penalty.txt create mode 100644 doc/wiki/Authentication.Policy.txt create mode 100644 doc/wiki/Authentication.RestrictAccess.txt create mode 100644 doc/wiki/Authentication.txt create mode 100644 doc/wiki/BasicConfiguration.txt create mode 100644 doc/wiki/Chrooting.txt create mode 100644 doc/wiki/Clients.NegativeUIDs.txt create mode 100644 doc/wiki/Clients.txt create mode 100644 doc/wiki/CompilingSource.txt create mode 100644 doc/wiki/ConfigFile.txt create mode 100644 doc/wiki/Debugging.Authentication.txt create mode 100644 doc/wiki/Debugging.ProcessTracing.txt create mode 100644 doc/wiki/Debugging.Rawlog.txt create mode 100644 doc/wiki/Debugging.Thunderbird.txt create mode 100644 doc/wiki/Design.Arrays.txt create mode 100644 doc/wiki/Design.AuthProcess.txt create mode 100644 doc/wiki/Design.AuthProtocol.txt create mode 100644 doc/wiki/Design.Buffers.txt create mode 100644 doc/wiki/Design.Code.txt create mode 100644 doc/wiki/Design.Dcrypt.txt create mode 100644 doc/wiki/Design.DoveadmProtocol.HTTP.txt create mode 100644 doc/wiki/Design.DoveadmProtocol.txt create mode 100644 doc/wiki/Design.Dsync.txt create mode 100644 doc/wiki/Design.Events.txt create mode 100644 doc/wiki/Design.Indexes.Cache.txt create mode 100644 doc/wiki/Design.Indexes.MailIndexApi.txt create mode 100644 doc/wiki/Design.Indexes.MainIndex.txt create mode 100644 doc/wiki/Design.Indexes.TransactionLog.txt create mode 100644 doc/wiki/Design.Indexes.txt create mode 100644 doc/wiki/Design.InputStreams.txt create mode 100644 doc/wiki/Design.Lua.txt create mode 100644 doc/wiki/Design.MailProcess.txt create mode 100644 doc/wiki/Design.Memory.txt create mode 100644 doc/wiki/Design.OutputStreams.txt create mode 100644 doc/wiki/Design.ParameterForwarding.txt create mode 100644 doc/wiki/Design.Plugins.txt create mode 100644 doc/wiki/Design.Processes.txt create mode 100644 doc/wiki/Design.Storage.ErrorHandling.txt create mode 100644 doc/wiki/Design.Storage.Mail.txt create mode 100644 doc/wiki/Design.Storage.MailNamespace.txt create mode 100644 doc/wiki/Design.Storage.MailStorage.txt create mode 100644 doc/wiki/Design.Storage.MailUser.txt create mode 100644 doc/wiki/Design.Storage.Mailbox.Save.txt create mode 100644 doc/wiki/Design.Storage.Mailbox.Search.txt create mode 100644 doc/wiki/Design.Storage.Mailbox.Sync.txt create mode 100644 doc/wiki/Design.Storage.Mailbox.Transaction.txt create mode 100644 doc/wiki/Design.Storage.Mailbox.txt create mode 100644 doc/wiki/Design.Storage.MailboxList.txt create mode 100644 doc/wiki/Design.Storage.Plugins.txt create mode 100644 doc/wiki/Design.Strings.txt create mode 100644 doc/wiki/Design.txt create mode 100644 doc/wiki/Dict.txt create mode 100644 doc/wiki/Dictionary.txt create mode 100644 doc/wiki/Director.txt create mode 100644 doc/wiki/DomainLost.txt create mode 100644 doc/wiki/Errors.ChgrpNoPerm.txt create mode 100644 doc/wiki/Events.txt create mode 100644 doc/wiki/FindMailLocation.txt create mode 100644 doc/wiki/FinishBasicConfiguration.txt create mode 100644 doc/wiki/HAProxy.txt create mode 100644 doc/wiki/HowTo.AntispamWithSieve.txt create mode 100644 doc/wiki/HowTo.EximAndDovecotSASL.txt create mode 100644 doc/wiki/HowTo.ImapcProxy.txt create mode 100644 doc/wiki/HowTo.PopBSMTPAndDovecot.txt create mode 100644 doc/wiki/HowTo.PopRelay.txt create mode 100644 doc/wiki/HowTo.PostfixAndDovecotSASL.txt create mode 100644 doc/wiki/HowTo.Rootless.txt create mode 100644 doc/wiki/HowTo.SimpleVirtualInstall.txt create mode 100644 doc/wiki/HowTo.WriteConfiguration.txt create mode 100644 doc/wiki/HowTo.txt create mode 100644 doc/wiki/IMAPServer.Hibernation.txt create mode 100644 doc/wiki/IMAPServer.txt create mode 100644 doc/wiki/ImapMetadata.txt create mode 100644 doc/wiki/IndexFiles.txt create mode 100644 doc/wiki/LDA.Exim.txt create mode 100644 doc/wiki/LDA.Indexing.txt create mode 100644 doc/wiki/LDA.Postfix.txt create mode 100644 doc/wiki/LDA.Qmail.txt create mode 100644 doc/wiki/LDA.Sendmail.txt create mode 100644 doc/wiki/LDA.txt create mode 100644 doc/wiki/LMTP.Exim.txt create mode 100644 doc/wiki/LMTP.txt create mode 100644 doc/wiki/Logging.txt create mode 100644 doc/wiki/LoginProcess.txt create mode 100644 doc/wiki/MDA.txt create mode 100644 doc/wiki/MTA.txt create mode 100644 doc/wiki/MailLocation.LocalDisk.txt create mode 100644 doc/wiki/MailLocation.Maildir.txt create mode 100644 doc/wiki/MailLocation.SharedDisk.txt create mode 100644 doc/wiki/MailLocation.dbox.txt create mode 100644 doc/wiki/MailLocation.mbox.txt create mode 100644 doc/wiki/MailLocation.txt create mode 100644 doc/wiki/MailboxFormat.Cydir.txt create mode 100644 doc/wiki/MailboxFormat.MH.txt create mode 100644 doc/wiki/MailboxFormat.Maildir.txt create mode 100644 doc/wiki/MailboxFormat.dbox.txt create mode 100644 doc/wiki/MailboxFormat.imapc.txt create mode 100644 doc/wiki/MailboxFormat.mailstore.txt create mode 100644 doc/wiki/MailboxFormat.mbox.txt create mode 100644 doc/wiki/MailboxFormat.mbx.txt create mode 100644 doc/wiki/MailboxFormat.txt create mode 100644 doc/wiki/MailboxSettings.txt create mode 100644 doc/wiki/Makefile.am create mode 100644 doc/wiki/Makefile.in create mode 100644 doc/wiki/MboxChildFolders.txt create mode 100644 doc/wiki/MboxLocking.txt create mode 100644 doc/wiki/MboxProblems.txt create mode 100644 doc/wiki/Migration.BincIMAP.txt create mode 100644 doc/wiki/Migration.Courier.txt create mode 100644 doc/wiki/Migration.Cyrus.txt create mode 100644 doc/wiki/Migration.Dsync.txt create mode 100644 doc/wiki/Migration.Gmail.txt create mode 100644 doc/wiki/Migration.Linuxconf.txt create mode 100644 doc/wiki/Migration.MailFormat.txt create mode 100644 doc/wiki/Migration.Online.txt create mode 100644 doc/wiki/Migration.Teapop.txt create mode 100644 doc/wiki/Migration.UW.txt create mode 100644 doc/wiki/Migration.Vm-pop3d.txt create mode 100644 doc/wiki/Migration.txt create mode 100644 doc/wiki/MissingMailboxes.txt create mode 100644 doc/wiki/Mountpoints.txt create mode 100644 doc/wiki/NFS.txt create mode 100644 doc/wiki/Namespaces.txt create mode 100644 doc/wiki/OSCompatibility.txt create mode 100644 doc/wiki/POP3Server.txt create mode 100644 doc/wiki/PasswordDatabase.BSDAuth.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.AllowNets.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.Host.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.NoDelay.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.NoLogin.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.Proxy.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.User.txt create mode 100644 doc/wiki/PasswordDatabase.ExtraFields.txt create mode 100644 doc/wiki/PasswordDatabase.IMAP.txt create mode 100644 doc/wiki/PasswordDatabase.PAM.txt create mode 100644 doc/wiki/PasswordDatabase.Shadow.txt create mode 100644 doc/wiki/PasswordDatabase.Static.txt create mode 100644 doc/wiki/PasswordDatabase.oauth2.txt create mode 100644 doc/wiki/PasswordDatabase.txt create mode 100644 doc/wiki/PerformanceTuning.txt create mode 100644 doc/wiki/Pigeonhole.Installation.txt create mode 100644 doc/wiki/Pigeonhole.ManageSieve.Clients.txt create mode 100644 doc/wiki/Pigeonhole.ManageSieve.Configuration.txt create mode 100644 doc/wiki/Pigeonhole.ManageSieve.Install.txt create mode 100644 doc/wiki/Pigeonhole.ManageSieve.Troubleshooting.txt create mode 100644 doc/wiki/Pigeonhole.ManageSieve.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Configuration.Dict.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Configuration.File.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Configuration.LDAP.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Configuration.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Examples.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.Duplicate.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.Editheader.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.Include.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.SpamtestVirustest.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.Vacation.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.Variables.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Extensions.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.Extdata.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.Extprograms.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.IMAPFilterSieve.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.IMAPSieve.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.Pipe.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Plugins.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Troubleshooting.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.Usage.txt create mode 100644 doc/wiki/Pigeonhole.Sieve.txt create mode 100644 doc/wiki/Pigeonhole.txt create mode 100644 doc/wiki/Plugins.Apparmor.txt create mode 100644 doc/wiki/Plugins.Autocreate.txt create mode 100644 doc/wiki/Plugins.CharsetAlias.txt create mode 100644 doc/wiki/Plugins.Compress.txt create mode 100644 doc/wiki/Plugins.Expire.txt create mode 100644 doc/wiki/Plugins.FTS.Lucene.txt create mode 100644 doc/wiki/Plugins.FTS.Solr.txt create mode 100644 doc/wiki/Plugins.FTS.Squat.txt create mode 100644 doc/wiki/Plugins.FTS.txt create mode 100644 doc/wiki/Plugins.LastLogin.txt create mode 100644 doc/wiki/Plugins.Lazyexpunge.txt create mode 100644 doc/wiki/Plugins.Listescape.txt create mode 100644 doc/wiki/Plugins.MailCrypt.txt create mode 100644 doc/wiki/Plugins.MailFilter.txt create mode 100644 doc/wiki/Plugins.MailLog.txt create mode 100644 doc/wiki/Plugins.MailboxAlias.txt create mode 100644 doc/wiki/Plugins.Notify.txt create mode 100644 doc/wiki/Plugins.NotifyStatus.txt create mode 100644 doc/wiki/Plugins.PushNotification.txt create mode 100644 doc/wiki/Plugins.QuotaClone.txt create mode 100644 doc/wiki/Plugins.Snarf.txt create mode 100644 doc/wiki/Plugins.Stats.txt create mode 100644 doc/wiki/Plugins.Trash.txt create mode 100644 doc/wiki/Plugins.VarExpandCrypt.txt create mode 100644 doc/wiki/Plugins.Virtual.txt create mode 100644 doc/wiki/Plugins.Welcome.txt create mode 100644 doc/wiki/Plugins.Zlib.txt create mode 100644 doc/wiki/Plugins.txt create mode 100644 doc/wiki/PostLoginScripting.txt create mode 100644 doc/wiki/PreAuth.txt create mode 100644 doc/wiki/QuickConfiguration.txt create mode 100644 doc/wiki/Quota.Configuration.txt create mode 100644 doc/wiki/Quota.Count.txt create mode 100644 doc/wiki/Quota.Dict.txt create mode 100644 doc/wiki/Quota.Dirsize.txt create mode 100644 doc/wiki/Quota.FS.txt create mode 100644 doc/wiki/Quota.Maildir.txt create mode 100644 doc/wiki/Quota.txt create mode 100644 doc/wiki/Replication.txt create mode 100644 doc/wiki/RunningDovecot.txt create mode 100644 doc/wiki/SSL.CertificateClientImporting.txt create mode 100644 doc/wiki/SSL.CertificateCreation.txt create mode 100644 doc/wiki/SSL.DovecotConfiguration.txt create mode 100644 doc/wiki/SSL.SNIClientSupport.txt create mode 100644 doc/wiki/SSL.txt create mode 100644 doc/wiki/Sasl.txt create mode 100644 doc/wiki/SecurityTuning.txt create mode 100644 doc/wiki/Services.txt create mode 100644 doc/wiki/SharedMailboxes.ClusterSetup.txt create mode 100644 doc/wiki/SharedMailboxes.Permissions.txt create mode 100644 doc/wiki/SharedMailboxes.Public.txt create mode 100644 doc/wiki/SharedMailboxes.Shared.txt create mode 100644 doc/wiki/SharedMailboxes.Symlinks.txt create mode 100644 doc/wiki/SharedMailboxes.txt create mode 100644 doc/wiki/SocketUnavailable.txt create mode 100644 doc/wiki/Statistics.Old.txt create mode 100644 doc/wiki/Statistics.txt create mode 100644 doc/wiki/Submission.txt create mode 100644 doc/wiki/SystemUsers.txt create mode 100644 doc/wiki/TestInstallation.txt create mode 100644 doc/wiki/TestPop3Installation.txt create mode 100644 doc/wiki/TimeMovedBackwards.txt create mode 100644 doc/wiki/Timeouts.txt create mode 100644 doc/wiki/Upgrading.1.0.txt create mode 100644 doc/wiki/Upgrading.1.1.txt create mode 100644 doc/wiki/Upgrading.1.2.txt create mode 100644 doc/wiki/Upgrading.2.0.txt create mode 100644 doc/wiki/Upgrading.2.1.txt create mode 100644 doc/wiki/Upgrading.2.2.txt create mode 100644 doc/wiki/Upgrading.2.3.txt create mode 100644 doc/wiki/Upgrading.txt create mode 100644 doc/wiki/UserDatabase.ExtraFields.txt create mode 100644 doc/wiki/UserDatabase.NSS.txt create mode 100644 doc/wiki/UserDatabase.Prefetch.txt create mode 100644 doc/wiki/UserDatabase.Static.txt create mode 100644 doc/wiki/UserDatabase.txt create mode 100644 doc/wiki/UserIds.txt create mode 100644 doc/wiki/Variables.txt create mode 100644 doc/wiki/VirtualUsers.Home.txt create mode 100644 doc/wiki/VirtualUsers.txt create mode 100644 doc/wiki/WhyDoesItNotWork.txt create mode 100644 doc/wiki/maildrop.txt create mode 100644 doc/wiki/mutt.txt create mode 100644 doc/wiki/uw2dovecot.sh.txt create mode 100644 dovecot-config.in.in create mode 100644 dovecot-version.h create mode 100644 dovecot.service.in create mode 100644 dovecot.socket create mode 100755 install-sh create mode 100755 ltmain.sh create mode 100644 m4/ac_checktype2.m4 create mode 100644 m4/ac_typeof.m4 create mode 100644 m4/arc4random.m4 create mode 100644 m4/blockdev.m4 create mode 100644 m4/c99_vsnprintf.m4 create mode 100644 m4/clock_gettime.m4 create mode 100644 m4/crypt.m4 create mode 100644 m4/crypt_xpg6.m4 create mode 100644 m4/dbqlk.m4 create mode 100644 m4/dirent_dtype.m4 create mode 100644 m4/dovecot.m4 create mode 100644 m4/fd_passing.m4 create mode 100644 m4/fdatasync.m4 create mode 100644 m4/flexible_array_member.m4 create mode 100644 m4/glibc.m4 create mode 100644 m4/gmtime_max.m4 create mode 100644 m4/gmtime_tm_gmtoff.m4 create mode 100644 m4/ioloop.m4 create mode 100644 m4/iovec.m4 create mode 100644 m4/ipv6.m4 create mode 100644 m4/libcap.m4 create mode 100644 m4/libtool.m4 create mode 100644 m4/libwrap.m4 create mode 100644 m4/linux_mremap.m4 create mode 100644 m4/ltoptions.m4 create mode 100644 m4/ltsugar.m4 create mode 100644 m4/ltversion.m4 create mode 100644 m4/lt~obsolete.m4 create mode 100644 m4/mmap_write.m4 create mode 100644 m4/mntctl.m4 create mode 100644 m4/modules.m4 create mode 100644 m4/notify.m4 create mode 100644 m4/nsl.m4 create mode 100644 m4/off_t_max.m4 create mode 100644 m4/pkg.m4 create mode 100644 m4/pr_set_dumpable.m4 create mode 100644 m4/q_quotactl.m4 create mode 100644 m4/quota.m4 create mode 100644 m4/random.m4 create mode 100644 m4/rlimit.m4 create mode 100644 m4/sendfile.m4 create mode 100644 m4/size_t_signed.m4 create mode 100644 m4/sockpeercred.m4 create mode 100644 m4/sql.m4 create mode 100644 m4/ssl.m4 create mode 100644 m4/st_tim.m4 create mode 100644 m4/static_array.m4 create mode 100644 m4/test_with.m4 create mode 100644 m4/time_t.m4 create mode 100644 m4/typeof.m4 create mode 100644 m4/typeof_dev_t.m4 create mode 100644 m4/uoff_t_max.m4 create mode 100644 m4/vararg.m4 create mode 100644 m4/want_apparmor.m4 create mode 100644 m4/want_bsdauth.m4 create mode 100644 m4/want_bzlib.m4 create mode 100644 m4/want_cassandra.m4 create mode 100644 m4/want_cdb.m4 create mode 100644 m4/want_checkpassword.m4 create mode 100644 m4/want_clucene.m4 create mode 100644 m4/want_db.m4 create mode 100644 m4/want_gssapi.m4 create mode 100644 m4/want_icu.m4 create mode 100644 m4/want_ldap.m4 create mode 100644 m4/want_lua.m4 create mode 100644 m4/want_lz4.m4 create mode 100644 m4/want_lzma.m4 create mode 100644 m4/want_mysql.m4 create mode 100644 m4/want_pam.m4 create mode 100644 m4/want_passwd.m4 create mode 100644 m4/want_pgsql.m4 create mode 100644 m4/want_prefetch.m4 create mode 100644 m4/want_shadow.m4 create mode 100644 m4/want_sodium.m4 create mode 100644 m4/want_solr.m4 create mode 100644 m4/want_sqlite.m4 create mode 100644 m4/want_stemmer.m4 create mode 100644 m4/want_systemd.m4 create mode 100644 m4/want_textcat.m4 create mode 100644 m4/want_unwind.m4 create mode 100644 m4/want_zlib.m4 create mode 100644 m4/want_zstd.m4 create mode 100755 missing create mode 100644 run-test-valgrind.supp create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/anvil/Makefile.am create mode 100644 src/anvil/Makefile.in create mode 100644 src/anvil/anvil-connection.c create mode 100644 src/anvil/anvil-connection.h create mode 100644 src/anvil/anvil-settings.c create mode 100644 src/anvil/common.h create mode 100644 src/anvil/connect-limit.c create mode 100644 src/anvil/connect-limit.h create mode 100644 src/anvil/main.c create mode 100644 src/anvil/penalty.c create mode 100644 src/anvil/penalty.h create mode 100644 src/anvil/test-penalty.c create mode 100644 src/auth/Makefile.am create mode 100644 src/auth/Makefile.in create mode 100644 src/auth/auth-cache.c create mode 100644 src/auth/auth-cache.h create mode 100644 src/auth/auth-client-connection.c create mode 100644 src/auth/auth-client-connection.h create mode 100644 src/auth/auth-common.h create mode 100644 src/auth/auth-fields.c create mode 100644 src/auth/auth-fields.h create mode 100644 src/auth/auth-master-connection.c create mode 100644 src/auth/auth-master-connection.h create mode 100644 src/auth/auth-penalty.c create mode 100644 src/auth/auth-penalty.h create mode 100644 src/auth/auth-policy.c create mode 100644 src/auth/auth-policy.h create mode 100644 src/auth/auth-request-fields.c create mode 100644 src/auth/auth-request-handler-private.h create mode 100644 src/auth/auth-request-handler.c create mode 100644 src/auth/auth-request-handler.h create mode 100644 src/auth/auth-request-stats.c create mode 100644 src/auth/auth-request-stats.h create mode 100644 src/auth/auth-request-var-expand.c create mode 100644 src/auth/auth-request-var-expand.h create mode 100644 src/auth/auth-request.c create mode 100644 src/auth/auth-request.h create mode 100644 src/auth/auth-settings.c create mode 100644 src/auth/auth-settings.h create mode 100644 src/auth/auth-stats.c create mode 100644 src/auth/auth-stats.h create mode 100644 src/auth/auth-token.c create mode 100644 src/auth/auth-token.h create mode 100644 src/auth/auth-worker-client.c create mode 100644 src/auth/auth-worker-client.h create mode 100644 src/auth/auth-worker-server.c create mode 100644 src/auth/auth-worker-server.h create mode 100644 src/auth/auth.c create mode 100644 src/auth/auth.h create mode 100644 src/auth/checkpassword-reply.c create mode 100644 src/auth/crypt-blowfish.c create mode 100644 src/auth/crypt-blowfish.h create mode 100644 src/auth/db-checkpassword.c create mode 100644 src/auth/db-checkpassword.h create mode 100644 src/auth/db-dict-cache-key.c create mode 100644 src/auth/db-dict.c create mode 100644 src/auth/db-dict.h create mode 100644 src/auth/db-ldap.c create mode 100644 src/auth/db-ldap.h create mode 100644 src/auth/db-lua.c create mode 100644 src/auth/db-lua.h create mode 100644 src/auth/db-oauth2.c create mode 100644 src/auth/db-oauth2.h create mode 100644 src/auth/db-passwd-file.c create mode 100644 src/auth/db-passwd-file.h create mode 100644 src/auth/db-sql.c create mode 100644 src/auth/db-sql.h create mode 100644 src/auth/main.c create mode 100644 src/auth/mech-anonymous.c create mode 100644 src/auth/mech-apop.c create mode 100644 src/auth/mech-cram-md5.c create mode 100644 src/auth/mech-digest-md5-private.h create mode 100644 src/auth/mech-digest-md5.c create mode 100644 src/auth/mech-dovecot-token.c create mode 100644 src/auth/mech-external.c create mode 100644 src/auth/mech-gssapi.c create mode 100644 src/auth/mech-login.c create mode 100644 src/auth/mech-oauth2.c create mode 100644 src/auth/mech-otp-common.c create mode 100644 src/auth/mech-otp-common.h create mode 100644 src/auth/mech-otp.c create mode 100644 src/auth/mech-plain-common.c create mode 100644 src/auth/mech-plain-common.h create mode 100644 src/auth/mech-plain.c create mode 100644 src/auth/mech-scram.c create mode 100644 src/auth/mech-scram.h create mode 100644 src/auth/mech-winbind.c create mode 100644 src/auth/mech.c create mode 100644 src/auth/mech.h create mode 100644 src/auth/mycrypt.c create mode 100644 src/auth/mycrypt.h create mode 100644 src/auth/passdb-blocking.c create mode 100644 src/auth/passdb-blocking.h create mode 100644 src/auth/passdb-bsdauth.c create mode 100644 src/auth/passdb-cache.c create mode 100644 src/auth/passdb-cache.h create mode 100644 src/auth/passdb-checkpassword.c create mode 100644 src/auth/passdb-dict.c create mode 100644 src/auth/passdb-imap.c create mode 100644 src/auth/passdb-ldap.c create mode 100644 src/auth/passdb-lua.c create mode 100644 src/auth/passdb-oauth2.c create mode 100644 src/auth/passdb-pam.c create mode 100644 src/auth/passdb-passwd-file.c create mode 100644 src/auth/passdb-passwd.c create mode 100644 src/auth/passdb-shadow.c create mode 100644 src/auth/passdb-sql.c create mode 100644 src/auth/passdb-static.c create mode 100644 src/auth/passdb-template.c create mode 100644 src/auth/passdb-template.h create mode 100644 src/auth/passdb.c create mode 100644 src/auth/passdb.h create mode 100644 src/auth/password-scheme-crypt.c create mode 100644 src/auth/password-scheme-md5crypt.c create mode 100644 src/auth/password-scheme-otp.c create mode 100644 src/auth/password-scheme-pbkdf2.c create mode 100644 src/auth/password-scheme-scram.c create mode 100644 src/auth/password-scheme-sodium.c create mode 100644 src/auth/password-scheme.c create mode 100644 src/auth/password-scheme.h create mode 100644 src/auth/test-auth-cache.c create mode 100644 src/auth/test-auth-request-fields.c create mode 100644 src/auth/test-auth-request-var-expand.c create mode 100644 src/auth/test-auth.h create mode 100644 src/auth/test-db-dict.c create mode 100644 src/auth/test-libpassword.c create mode 100644 src/auth/test-lua.c create mode 100644 src/auth/test-main.c create mode 100644 src/auth/test-mech.c create mode 100644 src/auth/test-mock.c create mode 100644 src/auth/test-username-filter.c create mode 100644 src/auth/userdb-blocking.c create mode 100644 src/auth/userdb-blocking.h create mode 100644 src/auth/userdb-checkpassword.c create mode 100644 src/auth/userdb-dict.c create mode 100644 src/auth/userdb-ldap.c create mode 100644 src/auth/userdb-lua.c create mode 100644 src/auth/userdb-passwd-file.c create mode 100644 src/auth/userdb-passwd.c create mode 100644 src/auth/userdb-prefetch.c create mode 100644 src/auth/userdb-sql.c create mode 100644 src/auth/userdb-static.c create mode 100644 src/auth/userdb-template.c create mode 100644 src/auth/userdb-template.h create mode 100644 src/auth/userdb.c create mode 100644 src/auth/userdb.h create mode 100644 src/config/Makefile.am create mode 100644 src/config/Makefile.in create mode 100644 src/config/all-settings.c create mode 100644 src/config/all-settings.h create mode 100644 src/config/config-connection.c create mode 100644 src/config/config-connection.h create mode 100644 src/config/config-filter.c create mode 100644 src/config/config-filter.h create mode 100644 src/config/config-parser-private.h create mode 100644 src/config/config-parser.c create mode 100644 src/config/config-parser.h create mode 100644 src/config/config-request.c create mode 100644 src/config/config-request.h create mode 100644 src/config/config-settings.c create mode 100644 src/config/doveconf.c create mode 100644 src/config/main.c create mode 100644 src/config/old-set-parser.c create mode 100644 src/config/old-set-parser.h create mode 100755 src/config/settings-get.pl create mode 100644 src/config/sysinfo-get.c create mode 100644 src/config/sysinfo-get.h create mode 100644 src/config/test-config-parser.c create mode 100644 src/dict/Makefile.am create mode 100644 src/dict/Makefile.in create mode 100644 src/dict/dict-commands.c create mode 100644 src/dict/dict-commands.h create mode 100644 src/dict/dict-connection.c create mode 100644 src/dict/dict-connection.h create mode 100644 src/dict/dict-init-cache.c create mode 100644 src/dict/dict-init-cache.h create mode 100644 src/dict/dict-settings.c create mode 100644 src/dict/dict-settings.h create mode 100644 src/dict/main.c create mode 100644 src/dict/main.h create mode 100644 src/director/Makefile.am create mode 100644 src/director/Makefile.in create mode 100644 src/director/auth-connection.c create mode 100644 src/director/auth-connection.h create mode 100644 src/director/director-connection.c create mode 100644 src/director/director-connection.h create mode 100644 src/director/director-host.c create mode 100644 src/director/director-host.h create mode 100644 src/director/director-request.c create mode 100644 src/director/director-request.h create mode 100644 src/director/director-settings.c create mode 100644 src/director/director-settings.h create mode 100644 src/director/director-test.c create mode 100644 src/director/director.c create mode 100644 src/director/director.h create mode 100644 src/director/doveadm-connection.c create mode 100644 src/director/doveadm-connection.h create mode 100644 src/director/login-connection.c create mode 100644 src/director/login-connection.h create mode 100644 src/director/mail-host.c create mode 100644 src/director/mail-host.h create mode 100644 src/director/main.c create mode 100644 src/director/notify-connection.c create mode 100644 src/director/notify-connection.h create mode 100644 src/director/test-user-directory.c create mode 100644 src/director/user-directory.c create mode 100644 src/director/user-directory.h create mode 100644 src/dns/Makefile.am create mode 100644 src/dns/Makefile.in create mode 100644 src/dns/dns-client-settings.c create mode 100644 src/dns/dns-client.c create mode 100644 src/doveadm/Makefile.am create mode 100644 src/doveadm/Makefile.in create mode 100644 src/doveadm/client-connection-http.c create mode 100644 src/doveadm/client-connection-private.h create mode 100644 src/doveadm/client-connection-tcp.c create mode 100644 src/doveadm/client-connection.c create mode 100644 src/doveadm/client-connection.h create mode 100644 src/doveadm/doveadm-auth-server.c create mode 100644 src/doveadm/doveadm-auth.c create mode 100644 src/doveadm/doveadm-cmd.c create mode 100644 src/doveadm/doveadm-cmd.h create mode 100644 src/doveadm/doveadm-dict.c create mode 100644 src/doveadm/doveadm-director.c create mode 100644 src/doveadm/doveadm-dsync.c create mode 100644 src/doveadm/doveadm-dsync.h create mode 100644 src/doveadm/doveadm-dump-dbox.c create mode 100644 src/doveadm/doveadm-dump-dcrypt-file.c create mode 100644 src/doveadm/doveadm-dump-dcrypt-key.c create mode 100644 src/doveadm/doveadm-dump-index.c create mode 100644 src/doveadm/doveadm-dump-log.c create mode 100644 src/doveadm/doveadm-dump-mailboxlog.c create mode 100644 src/doveadm/doveadm-dump-thread.c create mode 100644 src/doveadm/doveadm-dump.c create mode 100644 src/doveadm/doveadm-dump.h create mode 100644 src/doveadm/doveadm-fs.c create mode 100644 src/doveadm/doveadm-instance.c create mode 100644 src/doveadm/doveadm-kick.c create mode 100644 src/doveadm/doveadm-log.c create mode 100644 src/doveadm/doveadm-mail-altmove.c create mode 100644 src/doveadm/doveadm-mail-batch.c create mode 100644 src/doveadm/doveadm-mail-copymove.c create mode 100644 src/doveadm/doveadm-mail-deduplicate.c create mode 100644 src/doveadm/doveadm-mail-expunge.c create mode 100644 src/doveadm/doveadm-mail-fetch.c create mode 100644 src/doveadm/doveadm-mail-flags.c create mode 100644 src/doveadm/doveadm-mail-import.c create mode 100644 src/doveadm/doveadm-mail-index.c create mode 100644 src/doveadm/doveadm-mail-iter.c create mode 100644 src/doveadm/doveadm-mail-iter.h create mode 100644 src/doveadm/doveadm-mail-mailbox-cache.c create mode 100644 src/doveadm/doveadm-mail-mailbox-metadata.c create mode 100644 src/doveadm/doveadm-mail-mailbox-status.c create mode 100644 src/doveadm/doveadm-mail-mailbox.c create mode 100644 src/doveadm/doveadm-mail-rebuild.c create mode 100644 src/doveadm/doveadm-mail-save.c create mode 100644 src/doveadm/doveadm-mail-search.c create mode 100644 src/doveadm/doveadm-mail-server.c create mode 100644 src/doveadm/doveadm-mail.c create mode 100644 src/doveadm/doveadm-mail.h create mode 100644 src/doveadm/doveadm-mailbox-list-iter.c create mode 100644 src/doveadm/doveadm-mailbox-list-iter.h create mode 100644 src/doveadm/doveadm-master.c create mode 100644 src/doveadm/doveadm-mutf7.c create mode 100644 src/doveadm/doveadm-oldstats.c create mode 100644 src/doveadm/doveadm-penalty.c create mode 100644 src/doveadm/doveadm-print-flow.c create mode 100644 src/doveadm/doveadm-print-formatted.c create mode 100644 src/doveadm/doveadm-print-json.c create mode 100644 src/doveadm/doveadm-print-pager.c create mode 100644 src/doveadm/doveadm-print-private.h create mode 100644 src/doveadm/doveadm-print-server.c create mode 100644 src/doveadm/doveadm-print-tab.c create mode 100644 src/doveadm/doveadm-print-table.c create mode 100644 src/doveadm/doveadm-print.c create mode 100644 src/doveadm/doveadm-print.h create mode 100644 src/doveadm/doveadm-proxy.c create mode 100644 src/doveadm/doveadm-pw.c create mode 100644 src/doveadm/doveadm-replicator.c create mode 100644 src/doveadm/doveadm-server.h create mode 100644 src/doveadm/doveadm-settings.c create mode 100644 src/doveadm/doveadm-settings.h create mode 100644 src/doveadm/doveadm-sis.c create mode 100644 src/doveadm/doveadm-stats.c create mode 100644 src/doveadm/doveadm-util.c create mode 100644 src/doveadm/doveadm-util.h create mode 100644 src/doveadm/doveadm-who.c create mode 100644 src/doveadm/doveadm-who.h create mode 100644 src/doveadm/doveadm-zlib.c create mode 100644 src/doveadm/doveadm.c create mode 100644 src/doveadm/doveadm.h create mode 100644 src/doveadm/dsync/Makefile.am create mode 100644 src/doveadm/dsync/Makefile.in create mode 100644 src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c create mode 100644 src/doveadm/dsync/dsync-brain-mailbox-tree.c create mode 100644 src/doveadm/dsync/dsync-brain-mailbox.c create mode 100644 src/doveadm/dsync/dsync-brain-mails.c create mode 100644 src/doveadm/dsync/dsync-brain-private.h create mode 100644 src/doveadm/dsync/dsync-brain.c create mode 100644 src/doveadm/dsync/dsync-brain.h create mode 100644 src/doveadm/dsync/dsync-deserializer.c create mode 100644 src/doveadm/dsync/dsync-deserializer.h create mode 100644 src/doveadm/dsync/dsync-ibc-pipe.c create mode 100644 src/doveadm/dsync/dsync-ibc-private.h create mode 100644 src/doveadm/dsync/dsync-ibc-stream.c create mode 100644 src/doveadm/dsync/dsync-ibc.c create mode 100644 src/doveadm/dsync/dsync-ibc.h create mode 100644 src/doveadm/dsync/dsync-mail.c create mode 100644 src/doveadm/dsync/dsync-mail.h create mode 100644 src/doveadm/dsync/dsync-mailbox-export.c create mode 100644 src/doveadm/dsync/dsync-mailbox-export.h create mode 100644 src/doveadm/dsync/dsync-mailbox-import.c create mode 100644 src/doveadm/dsync/dsync-mailbox-import.h create mode 100644 src/doveadm/dsync/dsync-mailbox-state.c create mode 100644 src/doveadm/dsync/dsync-mailbox-state.h create mode 100644 src/doveadm/dsync/dsync-mailbox-tree-fill.c create mode 100644 src/doveadm/dsync/dsync-mailbox-tree-private.h create mode 100644 src/doveadm/dsync/dsync-mailbox-tree-sync.c create mode 100644 src/doveadm/dsync/dsync-mailbox-tree.c create mode 100644 src/doveadm/dsync/dsync-mailbox-tree.h create mode 100644 src/doveadm/dsync/dsync-mailbox.c create mode 100644 src/doveadm/dsync/dsync-mailbox.h create mode 100644 src/doveadm/dsync/dsync-serializer.c create mode 100644 src/doveadm/dsync/dsync-serializer.h create mode 100644 src/doveadm/dsync/dsync-transaction-log-scan.c create mode 100644 src/doveadm/dsync/dsync-transaction-log-scan.h create mode 100644 src/doveadm/dsync/test-dsync-mailbox-tree-sync.c create mode 100644 src/doveadm/main.c create mode 100644 src/doveadm/server-connection.c create mode 100644 src/doveadm/server-connection.h create mode 100644 src/doveadm/test-doveadm-util.c create mode 100644 src/imap-hibernate/Makefile.am create mode 100644 src/imap-hibernate/Makefile.in create mode 100644 src/imap-hibernate/imap-client.c create mode 100644 src/imap-hibernate/imap-client.h create mode 100644 src/imap-hibernate/imap-hibernate-client.c create mode 100644 src/imap-hibernate/imap-hibernate-client.h create mode 100644 src/imap-hibernate/imap-hibernate-settings.c create mode 100644 src/imap-hibernate/imap-master-connection.c create mode 100644 src/imap-hibernate/imap-master-connection.h create mode 100644 src/imap-hibernate/main.c create mode 100644 src/imap-login/Makefile.am create mode 100644 src/imap-login/Makefile.in create mode 100644 src/imap-login/client-authenticate.c create mode 100644 src/imap-login/client-authenticate.h create mode 100644 src/imap-login/imap-login-client.c create mode 100644 src/imap-login/imap-login-client.h create mode 100644 src/imap-login/imap-login-cmd-id.c create mode 100644 src/imap-login/imap-login-commands.c create mode 100644 src/imap-login/imap-login-commands.h create mode 100644 src/imap-login/imap-login-settings.c create mode 100644 src/imap-login/imap-login-settings.h create mode 100644 src/imap-login/imap-proxy.c create mode 100644 src/imap-login/imap-proxy.h create mode 100644 src/imap-urlauth/Makefile.am create mode 100644 src/imap-urlauth/Makefile.in create mode 100644 src/imap-urlauth/imap-urlauth-client.c create mode 100644 src/imap-urlauth/imap-urlauth-client.h create mode 100644 src/imap-urlauth/imap-urlauth-common.h create mode 100644 src/imap-urlauth/imap-urlauth-login-settings.c create mode 100644 src/imap-urlauth/imap-urlauth-login-settings.h create mode 100644 src/imap-urlauth/imap-urlauth-login.c create mode 100644 src/imap-urlauth/imap-urlauth-settings.c create mode 100644 src/imap-urlauth/imap-urlauth-settings.h create mode 100644 src/imap-urlauth/imap-urlauth-worker-settings.c create mode 100644 src/imap-urlauth/imap-urlauth-worker-settings.h create mode 100644 src/imap-urlauth/imap-urlauth-worker.c create mode 100644 src/imap-urlauth/imap-urlauth.c create mode 100644 src/imap/Makefile.am create mode 100644 src/imap/Makefile.in create mode 100644 src/imap/cmd-append.c create mode 100644 src/imap/cmd-cancelupdate.c create mode 100644 src/imap/cmd-capability.c create mode 100644 src/imap/cmd-check.c create mode 100644 src/imap/cmd-close.c create mode 100644 src/imap/cmd-copy.c create mode 100644 src/imap/cmd-create.c create mode 100644 src/imap/cmd-delete.c create mode 100644 src/imap/cmd-enable.c create mode 100644 src/imap/cmd-examine.c create mode 100644 src/imap/cmd-expunge.c create mode 100644 src/imap/cmd-fetch.c create mode 100644 src/imap/cmd-genurlauth.c create mode 100644 src/imap/cmd-getmetadata.c create mode 100644 src/imap/cmd-id.c create mode 100644 src/imap/cmd-idle.c create mode 100644 src/imap/cmd-list.c create mode 100644 src/imap/cmd-logout.c create mode 100644 src/imap/cmd-lsub.c create mode 100644 src/imap/cmd-namespace.c create mode 100644 src/imap/cmd-noop.c create mode 100644 src/imap/cmd-notify.c create mode 100644 src/imap/cmd-rename.c create mode 100644 src/imap/cmd-resetkey.c create mode 100644 src/imap/cmd-search.c create mode 100644 src/imap/cmd-select.c create mode 100644 src/imap/cmd-setmetadata.c create mode 100644 src/imap/cmd-sort.c create mode 100644 src/imap/cmd-status.c create mode 100644 src/imap/cmd-store.c create mode 100644 src/imap/cmd-subscribe.c create mode 100644 src/imap/cmd-thread.c create mode 100644 src/imap/cmd-unselect.c create mode 100644 src/imap/cmd-unsubscribe.c create mode 100644 src/imap/cmd-urlfetch.c create mode 100644 src/imap/cmd-x-cancel.c create mode 100644 src/imap/cmd-x-state.c create mode 100644 src/imap/imap-client-hibernate.c create mode 100644 src/imap/imap-client.c create mode 100644 src/imap/imap-client.h create mode 100644 src/imap/imap-commands-util.c create mode 100644 src/imap/imap-commands-util.h create mode 100644 src/imap/imap-commands.c create mode 100644 src/imap/imap-commands.h create mode 100644 src/imap/imap-common.h create mode 100644 src/imap/imap-expunge.c create mode 100644 src/imap/imap-expunge.h create mode 100644 src/imap/imap-feature.c create mode 100644 src/imap/imap-feature.h create mode 100644 src/imap/imap-fetch-body.c create mode 100644 src/imap/imap-fetch.c create mode 100644 src/imap/imap-fetch.h create mode 100644 src/imap/imap-list.c create mode 100644 src/imap/imap-list.h create mode 100644 src/imap/imap-master-client.c create mode 100644 src/imap/imap-master-client.h create mode 100644 src/imap/imap-notify.c create mode 100644 src/imap/imap-notify.h create mode 100644 src/imap/imap-search-args.c create mode 100644 src/imap/imap-search-args.h create mode 100644 src/imap/imap-search.c create mode 100644 src/imap/imap-search.h create mode 100644 src/imap/imap-settings.c create mode 100644 src/imap/imap-settings.h create mode 100644 src/imap/imap-state.c create mode 100644 src/imap/imap-state.h create mode 100644 src/imap/imap-status.c create mode 100644 src/imap/imap-status.h create mode 100644 src/imap/imap-sync-private.h create mode 100644 src/imap/imap-sync.c create mode 100644 src/imap/imap-sync.h create mode 100644 src/imap/mail-storage-callbacks.c create mode 100644 src/imap/main.c create mode 100644 src/imap/test-imap-client-hibernate.c create mode 100644 src/indexer/Makefile.am create mode 100644 src/indexer/Makefile.in create mode 100644 src/indexer/indexer-client.c create mode 100644 src/indexer/indexer-client.h create mode 100644 src/indexer/indexer-queue.c create mode 100644 src/indexer/indexer-queue.h create mode 100644 src/indexer/indexer-settings.c create mode 100644 src/indexer/indexer-worker-settings.c create mode 100644 src/indexer/indexer-worker.c create mode 100644 src/indexer/indexer.c create mode 100644 src/indexer/indexer.h create mode 100644 src/indexer/master-connection.c create mode 100644 src/indexer/master-connection.h create mode 100644 src/indexer/worker-connection.c create mode 100644 src/indexer/worker-connection.h create mode 100644 src/indexer/worker-pool.c create mode 100644 src/indexer/worker-pool.h create mode 100644 src/ipc/Makefile.am create mode 100644 src/ipc/Makefile.in create mode 100644 src/ipc/client.c create mode 100644 src/ipc/client.h create mode 100644 src/ipc/ipc-connection.c create mode 100644 src/ipc/ipc-connection.h create mode 100644 src/ipc/ipc-group.c create mode 100644 src/ipc/ipc-group.h create mode 100644 src/ipc/ipc-settings.c create mode 100644 src/ipc/main.c create mode 100644 src/lda/Makefile.am create mode 100644 src/lda/Makefile.in create mode 100644 src/lda/main.c create mode 100644 src/lib-auth/Makefile.am create mode 100644 src/lib-auth/Makefile.in create mode 100644 src/lib-auth/auth-client-connection.c create mode 100644 src/lib-auth/auth-client-interface.h create mode 100644 src/lib-auth/auth-client-private.h create mode 100644 src/lib-auth/auth-client-request.c create mode 100644 src/lib-auth/auth-client.c create mode 100644 src/lib-auth/auth-client.h create mode 100644 src/lib-auth/auth-master.c create mode 100644 src/lib-auth/auth-master.h create mode 100644 src/lib-auth/test-auth-master.c create mode 100644 src/lib-charset/Makefile.am create mode 100644 src/lib-charset/Makefile.in create mode 100644 src/lib-charset/charset-iconv.c create mode 100644 src/lib-charset/charset-utf8-only.c create mode 100644 src/lib-charset/charset-utf8-private.h create mode 100644 src/lib-charset/charset-utf8.c create mode 100644 src/lib-charset/charset-utf8.h create mode 100644 src/lib-charset/test-charset.c create mode 100644 src/lib-compression/Makefile.am create mode 100644 src/lib-compression/Makefile.in create mode 100644 src/lib-compression/bench-compression.c create mode 100644 src/lib-compression/compression.c create mode 100644 src/lib-compression/compression.h create mode 100644 src/lib-compression/iostream-lz4.h create mode 100644 src/lib-compression/iostream-zstd-private.h create mode 100644 src/lib-compression/istream-bzlib.c create mode 100644 src/lib-compression/istream-decompress.c create mode 100644 src/lib-compression/istream-lz4.c create mode 100644 src/lib-compression/istream-lzma.c create mode 100644 src/lib-compression/istream-zlib.c create mode 100644 src/lib-compression/istream-zlib.h create mode 100644 src/lib-compression/istream-zstd.c create mode 100644 src/lib-compression/ostream-bzlib.c create mode 100644 src/lib-compression/ostream-lz4.c create mode 100644 src/lib-compression/ostream-zlib.c create mode 100644 src/lib-compression/ostream-zlib.h create mode 100644 src/lib-compression/ostream-zstd.c create mode 100644 src/lib-compression/test-compression.c create mode 100644 src/lib-dcrypt/Makefile.am create mode 100644 src/lib-dcrypt/Makefile.in create mode 100644 src/lib-dcrypt/dcrypt-iostream.h create mode 100644 src/lib-dcrypt/dcrypt-openssl.c create mode 100644 src/lib-dcrypt/dcrypt-private.h create mode 100644 src/lib-dcrypt/dcrypt.c create mode 100644 src/lib-dcrypt/dcrypt.h create mode 100644 src/lib-dcrypt/istream-decrypt.c create mode 100644 src/lib-dcrypt/istream-decrypt.h create mode 100644 src/lib-dcrypt/ostream-encrypt.c create mode 100644 src/lib-dcrypt/ostream-encrypt.h create mode 100644 src/lib-dcrypt/sample-v1.asc create mode 100644 src/lib-dcrypt/sample-v1_short.asc create mode 100644 src/lib-dcrypt/sample-v2.asc create mode 100644 src/lib-dcrypt/test-crypto.c create mode 100644 src/lib-dcrypt/test-stream.c create mode 100644 src/lib-dict-backend/Makefile.am create mode 100644 src/lib-dict-backend/Makefile.in create mode 100644 src/lib-dict-backend/dict-cdb.c create mode 100644 src/lib-dict-backend/dict-ldap-settings.c create mode 100644 src/lib-dict-backend/dict-ldap-settings.h create mode 100644 src/lib-dict-backend/dict-ldap.c create mode 100644 src/lib-dict-backend/dict-sql-private.h create mode 100644 src/lib-dict-backend/dict-sql-settings.c create mode 100644 src/lib-dict-backend/dict-sql-settings.h create mode 100644 src/lib-dict-backend/dict-sql.c create mode 100644 src/lib-dict-backend/dict-sql.h create mode 100644 src/lib-dict-backend/dict.conf create mode 100644 src/lib-dict-backend/test-dict-sql.c create mode 100644 src/lib-dict-extra/Makefile.am create mode 100644 src/lib-dict-extra/Makefile.in create mode 100644 src/lib-dict-extra/dict-fs.c create mode 100644 src/lib-dict-extra/dict-register.c create mode 100644 src/lib-dict-extra/test-dict-fs.c create mode 100644 src/lib-dict/Makefile.am create mode 100644 src/lib-dict/Makefile.in create mode 100644 src/lib-dict/dict-client.c create mode 100644 src/lib-dict/dict-client.h create mode 100644 src/lib-dict/dict-fail.c create mode 100644 src/lib-dict/dict-file.c create mode 100644 src/lib-dict/dict-iter-lua.c create mode 100644 src/lib-dict/dict-lua-private.h create mode 100644 src/lib-dict/dict-lua.c create mode 100644 src/lib-dict/dict-lua.h create mode 100644 src/lib-dict/dict-memcached-ascii.c create mode 100644 src/lib-dict/dict-memcached.c create mode 100644 src/lib-dict/dict-private.h create mode 100644 src/lib-dict/dict-redis.c create mode 100644 src/lib-dict/dict-transaction-memory.c create mode 100644 src/lib-dict/dict-transaction-memory.h create mode 100644 src/lib-dict/dict-txn-lua.c create mode 100644 src/lib-dict/dict.c create mode 100644 src/lib-dict/dict.h create mode 100644 src/lib-dict/test-dict-client.c create mode 100644 src/lib-dict/test-dict.c create mode 100644 src/lib-dns/Makefile.am create mode 100644 src/lib-dns/Makefile.in create mode 100644 src/lib-dns/dns-lookup.c create mode 100644 src/lib-dns/dns-lookup.h create mode 100644 src/lib-dns/dns-util.c create mode 100644 src/lib-dns/dns-util.h create mode 100644 src/lib-dns/test-dns-util.c create mode 100644 src/lib-dovecot/Makefile.am create mode 100644 src/lib-dovecot/Makefile.in create mode 100644 src/lib-fs/Makefile.am create mode 100644 src/lib-fs/Makefile.in create mode 100644 src/lib-fs/fs-api-private.h create mode 100644 src/lib-fs/fs-api.c create mode 100644 src/lib-fs/fs-api.h create mode 100644 src/lib-fs/fs-dict.c create mode 100644 src/lib-fs/fs-metawrap.c create mode 100644 src/lib-fs/fs-posix.c create mode 100644 src/lib-fs/fs-randomfail.c create mode 100644 src/lib-fs/fs-sis-common.c create mode 100644 src/lib-fs/fs-sis-common.h create mode 100644 src/lib-fs/fs-sis-queue.c create mode 100644 src/lib-fs/fs-sis.c create mode 100644 src/lib-fs/fs-test-async.c create mode 100644 src/lib-fs/fs-test.c create mode 100644 src/lib-fs/fs-test.h create mode 100644 src/lib-fs/fs-wrapper.c create mode 100644 src/lib-fs/fs-wrapper.h create mode 100644 src/lib-fs/istream-fs-file.c create mode 100644 src/lib-fs/istream-fs-file.h create mode 100644 src/lib-fs/istream-fs-stats.c create mode 100644 src/lib-fs/istream-fs-stats.h create mode 100644 src/lib-fs/istream-metawrap.c create mode 100644 src/lib-fs/istream-metawrap.h create mode 100644 src/lib-fs/ostream-cmp.c create mode 100644 src/lib-fs/ostream-cmp.h create mode 100644 src/lib-fs/ostream-metawrap.c create mode 100644 src/lib-fs/ostream-metawrap.h create mode 100644 src/lib-fs/test-fs-metawrap.c create mode 100644 src/lib-fs/test-fs-posix.c create mode 100644 src/lib-fts/Makefile.am create mode 100644 src/lib-fts/Makefile.in create mode 100644 src/lib-fts/PropList.txt create mode 100644 src/lib-fts/WordBreakProperty.txt create mode 100644 src/lib-fts/fts-common.h create mode 100644 src/lib-fts/fts-filter-common.c create mode 100644 src/lib-fts/fts-filter-common.h create mode 100644 src/lib-fts/fts-filter-contractions.c create mode 100644 src/lib-fts/fts-filter-english-possessive.c create mode 100644 src/lib-fts/fts-filter-lowercase.c create mode 100644 src/lib-fts/fts-filter-normalizer-icu.c create mode 100644 src/lib-fts/fts-filter-private.h create mode 100644 src/lib-fts/fts-filter-stemmer-snowball.c create mode 100644 src/lib-fts/fts-filter-stopwords.c create mode 100644 src/lib-fts/fts-filter.c create mode 100644 src/lib-fts/fts-filter.h create mode 100644 src/lib-fts/fts-icu.c create mode 100644 src/lib-fts/fts-icu.h create mode 100644 src/lib-fts/fts-language.c create mode 100644 src/lib-fts/fts-language.h create mode 100644 src/lib-fts/fts-library.c create mode 100644 src/lib-fts/fts-library.h create mode 100644 src/lib-fts/fts-tokenizer-address.c create mode 100644 src/lib-fts/fts-tokenizer-common.c create mode 100644 src/lib-fts/fts-tokenizer-common.h create mode 100644 src/lib-fts/fts-tokenizer-generic-private.h create mode 100644 src/lib-fts/fts-tokenizer-generic.c create mode 100644 src/lib-fts/fts-tokenizer-private.h create mode 100644 src/lib-fts/fts-tokenizer.c create mode 100644 src/lib-fts/fts-tokenizer.h create mode 100644 src/lib-fts/stopwords/stopwords_da.txt create mode 100644 src/lib-fts/stopwords/stopwords_de.txt create mode 100644 src/lib-fts/stopwords/stopwords_en.txt create mode 100644 src/lib-fts/stopwords/stopwords_es.txt create mode 100644 src/lib-fts/stopwords/stopwords_fi.txt create mode 100644 src/lib-fts/stopwords/stopwords_fr.txt create mode 100644 src/lib-fts/stopwords/stopwords_it.txt create mode 100644 src/lib-fts/stopwords/stopwords_malformed.txt create mode 100644 src/lib-fts/stopwords/stopwords_nl.txt create mode 100644 src/lib-fts/stopwords/stopwords_no.txt create mode 100644 src/lib-fts/stopwords/stopwords_pt.txt create mode 100644 src/lib-fts/stopwords/stopwords_ro.txt create mode 100644 src/lib-fts/stopwords/stopwords_ru.txt create mode 100644 src/lib-fts/stopwords/stopwords_sv.txt create mode 100644 src/lib-fts/stopwords/stopwords_tr.txt create mode 100644 src/lib-fts/test-fts-filter.c create mode 100644 src/lib-fts/test-fts-icu.c create mode 100644 src/lib-fts/test-fts-language.c create mode 100644 src/lib-fts/test-fts-tokenizer.c create mode 100644 src/lib-fts/udhr_fra.txt create mode 100644 src/lib-fts/word-boundary-data.c create mode 100644 src/lib-fts/word-break-data.c create mode 100644 src/lib-fts/word-properties.pl create mode 100644 src/lib-http/Makefile.am create mode 100644 src/lib-http/Makefile.in create mode 100644 src/lib-http/http-auth.c create mode 100644 src/lib-http/http-auth.h create mode 100644 src/lib-http/http-client-connection.c create mode 100644 src/lib-http/http-client-host.c create mode 100644 src/lib-http/http-client-peer.c create mode 100644 src/lib-http/http-client-private.h create mode 100644 src/lib-http/http-client-queue.c create mode 100644 src/lib-http/http-client-request.c create mode 100644 src/lib-http/http-client.c create mode 100644 src/lib-http/http-client.h create mode 100644 src/lib-http/http-common.h create mode 100644 src/lib-http/http-date.c create mode 100644 src/lib-http/http-date.h create mode 100644 src/lib-http/http-header-parser.c create mode 100644 src/lib-http/http-header-parser.h create mode 100644 src/lib-http/http-header.c create mode 100644 src/lib-http/http-header.h create mode 100644 src/lib-http/http-message-parser.c create mode 100644 src/lib-http/http-message-parser.h create mode 100644 src/lib-http/http-parser.c create mode 100644 src/lib-http/http-parser.h create mode 100644 src/lib-http/http-request-parser.c create mode 100644 src/lib-http/http-request-parser.h create mode 100644 src/lib-http/http-request.c create mode 100644 src/lib-http/http-request.h create mode 100644 src/lib-http/http-response-parser.c create mode 100644 src/lib-http/http-response-parser.h create mode 100644 src/lib-http/http-response.c create mode 100644 src/lib-http/http-response.h create mode 100644 src/lib-http/http-server-connection.c create mode 100644 src/lib-http/http-server-ostream.c create mode 100644 src/lib-http/http-server-private.h create mode 100644 src/lib-http/http-server-request.c create mode 100644 src/lib-http/http-server-resource.c create mode 100644 src/lib-http/http-server-response.c create mode 100644 src/lib-http/http-server.c create mode 100644 src/lib-http/http-server.h create mode 100644 src/lib-http/http-transfer-chunked.c create mode 100644 src/lib-http/http-transfer.h create mode 100644 src/lib-http/http-url.c create mode 100644 src/lib-http/http-url.h create mode 100644 src/lib-http/test-http-auth.c create mode 100644 src/lib-http/test-http-client-errors.c create mode 100644 src/lib-http/test-http-client-request.c create mode 100644 src/lib-http/test-http-client.c create mode 100644 src/lib-http/test-http-date.c create mode 100644 src/lib-http/test-http-header-parser.c create mode 100644 src/lib-http/test-http-payload.c create mode 100644 src/lib-http/test-http-request-parser.c create mode 100644 src/lib-http/test-http-response-parser.c create mode 100644 src/lib-http/test-http-server-errors.c create mode 100644 src/lib-http/test-http-server.c create mode 100644 src/lib-http/test-http-transfer.c create mode 100644 src/lib-http/test-http-url.c create mode 100644 src/lib-imap-client/Makefile.am create mode 100644 src/lib-imap-client/Makefile.in create mode 100644 src/lib-imap-client/imapc-client-private.h create mode 100644 src/lib-imap-client/imapc-client.c create mode 100644 src/lib-imap-client/imapc-client.h create mode 100644 src/lib-imap-client/imapc-connection.c create mode 100644 src/lib-imap-client/imapc-connection.h create mode 100644 src/lib-imap-client/imapc-msgmap.c create mode 100644 src/lib-imap-client/imapc-msgmap.h create mode 100644 src/lib-imap-client/test-imapc-client.c create mode 100644 src/lib-imap-storage/Makefile.am create mode 100644 src/lib-imap-storage/Makefile.in create mode 100644 src/lib-imap-storage/imap-metadata.c create mode 100644 src/lib-imap-storage/imap-metadata.h create mode 100644 src/lib-imap-storage/imap-msgpart-url.c create mode 100644 src/lib-imap-storage/imap-msgpart-url.h create mode 100644 src/lib-imap-storage/imap-msgpart.c create mode 100644 src/lib-imap-storage/imap-msgpart.h create mode 100644 src/lib-imap-urlauth/Makefile.am create mode 100644 src/lib-imap-urlauth/Makefile.in create mode 100644 src/lib-imap-urlauth/imap-urlauth-backend.c create mode 100644 src/lib-imap-urlauth/imap-urlauth-backend.h create mode 100644 src/lib-imap-urlauth/imap-urlauth-connection.c create mode 100644 src/lib-imap-urlauth/imap-urlauth-connection.h create mode 100644 src/lib-imap-urlauth/imap-urlauth-fetch.c create mode 100644 src/lib-imap-urlauth/imap-urlauth-fetch.h create mode 100644 src/lib-imap-urlauth/imap-urlauth-private.h create mode 100644 src/lib-imap-urlauth/imap-urlauth.c create mode 100644 src/lib-imap-urlauth/imap-urlauth.h create mode 100644 src/lib-imap/Makefile.am create mode 100644 src/lib-imap/Makefile.in create mode 100644 src/lib-imap/fuzz-imap-bodystructure.c create mode 100644 src/lib-imap/fuzz-imap-utf7.c create mode 100644 src/lib-imap/imap-arg.c create mode 100644 src/lib-imap/imap-arg.h create mode 100644 src/lib-imap/imap-base-subject.c create mode 100644 src/lib-imap/imap-base-subject.h create mode 100644 src/lib-imap/imap-bodystructure.c create mode 100644 src/lib-imap/imap-bodystructure.h create mode 100644 src/lib-imap/imap-date.c create mode 100644 src/lib-imap/imap-date.h create mode 100644 src/lib-imap/imap-envelope.c create mode 100644 src/lib-imap/imap-envelope.h create mode 100644 src/lib-imap/imap-id.c create mode 100644 src/lib-imap/imap-id.h create mode 100644 src/lib-imap/imap-keepalive.c create mode 100644 src/lib-imap/imap-keepalive.h create mode 100644 src/lib-imap/imap-match.c create mode 100644 src/lib-imap/imap-match.h create mode 100644 src/lib-imap/imap-parser.c create mode 100644 src/lib-imap/imap-parser.h create mode 100644 src/lib-imap/imap-quote.c create mode 100644 src/lib-imap/imap-quote.h create mode 100644 src/lib-imap/imap-resp-code.h create mode 100644 src/lib-imap/imap-seqset.c create mode 100644 src/lib-imap/imap-seqset.h create mode 100644 src/lib-imap/imap-url.c create mode 100644 src/lib-imap/imap-url.h create mode 100644 src/lib-imap/imap-utf7.c create mode 100644 src/lib-imap/imap-utf7.h create mode 100644 src/lib-imap/imap-util.c create mode 100644 src/lib-imap/imap-util.h create mode 100644 src/lib-imap/test-imap-bodystructure.c create mode 100644 src/lib-imap/test-imap-envelope.c create mode 100644 src/lib-imap/test-imap-match.c create mode 100644 src/lib-imap/test-imap-parser.c create mode 100644 src/lib-imap/test-imap-quote.c create mode 100644 src/lib-imap/test-imap-url.c create mode 100644 src/lib-imap/test-imap-utf7.c create mode 100644 src/lib-imap/test-imap-util.c create mode 100644 src/lib-index/Makefile.am create mode 100644 src/lib-index/Makefile.in create mode 100644 src/lib-index/mail-cache-decisions.c create mode 100644 src/lib-index/mail-cache-fields.c create mode 100644 src/lib-index/mail-cache-lookup.c create mode 100644 src/lib-index/mail-cache-private.h create mode 100644 src/lib-index/mail-cache-purge.c create mode 100644 src/lib-index/mail-cache-sync-update.c create mode 100644 src/lib-index/mail-cache-transaction.c create mode 100644 src/lib-index/mail-cache.c create mode 100644 src/lib-index/mail-cache.h create mode 100644 src/lib-index/mail-index-alloc-cache.c create mode 100644 src/lib-index/mail-index-alloc-cache.h create mode 100644 src/lib-index/mail-index-dummy-view.c create mode 100644 src/lib-index/mail-index-fsck.c create mode 100644 src/lib-index/mail-index-lock.c create mode 100644 src/lib-index/mail-index-map-hdr.c create mode 100644 src/lib-index/mail-index-map-read.c create mode 100644 src/lib-index/mail-index-map.c create mode 100644 src/lib-index/mail-index-modseq.c create mode 100644 src/lib-index/mail-index-modseq.h create mode 100644 src/lib-index/mail-index-private.h create mode 100644 src/lib-index/mail-index-strmap.c create mode 100644 src/lib-index/mail-index-strmap.h create mode 100644 src/lib-index/mail-index-sync-ext.c create mode 100644 src/lib-index/mail-index-sync-keywords.c create mode 100644 src/lib-index/mail-index-sync-private.h create mode 100644 src/lib-index/mail-index-sync-update.c create mode 100644 src/lib-index/mail-index-sync.c create mode 100644 src/lib-index/mail-index-transaction-export.c create mode 100644 src/lib-index/mail-index-transaction-finish.c create mode 100644 src/lib-index/mail-index-transaction-private.h create mode 100644 src/lib-index/mail-index-transaction-sort-appends.c create mode 100644 src/lib-index/mail-index-transaction-update.c create mode 100644 src/lib-index/mail-index-transaction-view.c create mode 100644 src/lib-index/mail-index-transaction.c create mode 100644 src/lib-index/mail-index-util.c create mode 100644 src/lib-index/mail-index-util.h create mode 100644 src/lib-index/mail-index-view-private.h create mode 100644 src/lib-index/mail-index-view-sync.c create mode 100644 src/lib-index/mail-index-view.c create mode 100644 src/lib-index/mail-index-write.c create mode 100644 src/lib-index/mail-index.c create mode 100644 src/lib-index/mail-index.h create mode 100644 src/lib-index/mail-transaction-log-append.c create mode 100644 src/lib-index/mail-transaction-log-file.c create mode 100644 src/lib-index/mail-transaction-log-modseq.c create mode 100644 src/lib-index/mail-transaction-log-private.h create mode 100644 src/lib-index/mail-transaction-log-view-private.h create mode 100644 src/lib-index/mail-transaction-log-view.c create mode 100644 src/lib-index/mail-transaction-log.c create mode 100644 src/lib-index/mail-transaction-log.h create mode 100644 src/lib-index/mailbox-log.c create mode 100644 src/lib-index/mailbox-log.h create mode 100644 src/lib-index/test-mail-cache-common.c create mode 100644 src/lib-index/test-mail-cache-fields.c create mode 100644 src/lib-index/test-mail-cache-purge.c create mode 100644 src/lib-index/test-mail-cache.c create mode 100644 src/lib-index/test-mail-cache.h create mode 100644 src/lib-index/test-mail-index-map.c create mode 100644 src/lib-index/test-mail-index-modseq.c create mode 100644 src/lib-index/test-mail-index-sync-ext.c create mode 100644 src/lib-index/test-mail-index-transaction-finish.c create mode 100644 src/lib-index/test-mail-index-transaction-update.c create mode 100644 src/lib-index/test-mail-index-write.c create mode 100644 src/lib-index/test-mail-index.c create mode 100644 src/lib-index/test-mail-index.h create mode 100644 src/lib-index/test-mail-transaction-log-append.c create mode 100644 src/lib-index/test-mail-transaction-log-file.c create mode 100644 src/lib-index/test-mail-transaction-log-view.c create mode 100644 src/lib-lda/Makefile.am create mode 100644 src/lib-lda/Makefile.in create mode 100644 src/lib-lda/lda-settings.c create mode 100644 src/lib-lda/lda-settings.h create mode 100644 src/lib-lda/mail-deliver.c create mode 100644 src/lib-lda/mail-deliver.h create mode 100644 src/lib-lda/mail-send.c create mode 100644 src/lib-lda/mail-send.h create mode 100644 src/lib-ldap/Makefile.am create mode 100644 src/lib-ldap/Makefile.in create mode 100644 src/lib-ldap/ldap-client.c create mode 100644 src/lib-ldap/ldap-client.h create mode 100644 src/lib-ldap/ldap-compare.c create mode 100644 src/lib-ldap/ldap-connection-pool.c create mode 100644 src/lib-ldap/ldap-connection-pool.h create mode 100644 src/lib-ldap/ldap-connection.c create mode 100644 src/lib-ldap/ldap-entry.c create mode 100644 src/lib-ldap/ldap-iterator.c create mode 100644 src/lib-ldap/ldap-private.h create mode 100644 src/lib-ldap/ldap-search.c create mode 100644 src/lib-lua/Makefile.am create mode 100644 src/lib-lua/Makefile.in create mode 100644 src/lib-lua/dlua-compat.c create mode 100644 src/lib-lua/dlua-compat.h create mode 100644 src/lib-lua/dlua-dovecot-http.c create mode 100644 src/lib-lua/dlua-dovecot.c create mode 100644 src/lib-lua/dlua-error.c create mode 100644 src/lib-lua/dlua-pushstring.c create mode 100644 src/lib-lua/dlua-resume.c create mode 100644 src/lib-lua/dlua-script-private.h create mode 100644 src/lib-lua/dlua-script.c create mode 100644 src/lib-lua/dlua-script.h create mode 100644 src/lib-lua/dlua-table.c create mode 100644 src/lib-lua/dlua-thread.c create mode 100644 src/lib-lua/dlua-wrapper.h create mode 100644 src/lib-lua/test-dict-lua.c create mode 100644 src/lib-lua/test-lua.c create mode 100644 src/lib-mail/Makefile.am create mode 100644 src/lib-mail/Makefile.in create mode 100644 src/lib-mail/fuzz-message-parser.c create mode 100644 src/lib-mail/html-entities.h create mode 100644 src/lib-mail/istream-attachment-connector.c create mode 100644 src/lib-mail/istream-attachment-connector.h create mode 100644 src/lib-mail/istream-attachment-extractor.c create mode 100644 src/lib-mail/istream-attachment-extractor.h create mode 100644 src/lib-mail/istream-binary-converter.c create mode 100644 src/lib-mail/istream-binary-converter.h create mode 100644 src/lib-mail/istream-dot.c create mode 100644 src/lib-mail/istream-dot.h create mode 100644 src/lib-mail/istream-header-filter.c create mode 100644 src/lib-mail/istream-header-filter.h create mode 100644 src/lib-mail/istream-nonuls.c create mode 100644 src/lib-mail/istream-nonuls.h create mode 100644 src/lib-mail/istream-qp-decoder.c create mode 100644 src/lib-mail/istream-qp-encoder.c create mode 100644 src/lib-mail/istream-qp.h create mode 100644 src/lib-mail/mail-html2text.c create mode 100644 src/lib-mail/mail-html2text.h create mode 100644 src/lib-mail/mail-types.h create mode 100644 src/lib-mail/mail-user-hash.c create mode 100644 src/lib-mail/mail-user-hash.h create mode 100644 src/lib-mail/mbox-from.c create mode 100644 src/lib-mail/mbox-from.h create mode 100644 src/lib-mail/message-address.c create mode 100644 src/lib-mail/message-address.h create mode 100644 src/lib-mail/message-binary-part.c create mode 100644 src/lib-mail/message-binary-part.h create mode 100644 src/lib-mail/message-date.c create mode 100644 src/lib-mail/message-date.h create mode 100644 src/lib-mail/message-decoder.c create mode 100644 src/lib-mail/message-decoder.h create mode 100644 src/lib-mail/message-header-decode.c create mode 100644 src/lib-mail/message-header-decode.h create mode 100644 src/lib-mail/message-header-encode.c create mode 100644 src/lib-mail/message-header-encode.h create mode 100644 src/lib-mail/message-header-hash.c create mode 100644 src/lib-mail/message-header-hash.h create mode 100644 src/lib-mail/message-header-parser.c create mode 100644 src/lib-mail/message-header-parser.h create mode 100644 src/lib-mail/message-id.c create mode 100644 src/lib-mail/message-id.h create mode 100644 src/lib-mail/message-parser-from-parts.c create mode 100644 src/lib-mail/message-parser-private.h create mode 100644 src/lib-mail/message-parser.c create mode 100644 src/lib-mail/message-parser.h create mode 100644 src/lib-mail/message-part-data.c create mode 100644 src/lib-mail/message-part-data.h create mode 100644 src/lib-mail/message-part-serialize.c create mode 100644 src/lib-mail/message-part-serialize.h create mode 100644 src/lib-mail/message-part.c create mode 100644 src/lib-mail/message-part.h create mode 100644 src/lib-mail/message-search.c create mode 100644 src/lib-mail/message-search.h create mode 100644 src/lib-mail/message-size.c create mode 100644 src/lib-mail/message-size.h create mode 100644 src/lib-mail/message-snippet.c create mode 100644 src/lib-mail/message-snippet.h create mode 100644 src/lib-mail/ostream-dot.c create mode 100644 src/lib-mail/ostream-dot.h create mode 100644 src/lib-mail/qp-decoder.c create mode 100644 src/lib-mail/qp-decoder.h create mode 100644 src/lib-mail/qp-encoder.c create mode 100644 src/lib-mail/qp-encoder.h create mode 100644 src/lib-mail/quoted-printable.c create mode 100644 src/lib-mail/quoted-printable.h create mode 100644 src/lib-mail/rfc2231-parser.c create mode 100644 src/lib-mail/rfc2231-parser.h create mode 100644 src/lib-mail/rfc822-parser.c create mode 100644 src/lib-mail/rfc822-parser.h create mode 100644 src/lib-mail/test-istream-attachment.c create mode 100644 src/lib-mail/test-istream-binary-converter.c create mode 100644 src/lib-mail/test-istream-dot.c create mode 100644 src/lib-mail/test-istream-header-filter.c create mode 100644 src/lib-mail/test-istream-qp-decoder.c create mode 100644 src/lib-mail/test-istream-qp-encoder.c create mode 100644 src/lib-mail/test-mail-html2text.c create mode 100644 src/lib-mail/test-mail-user-hash.c create mode 100644 src/lib-mail/test-mbox-from.c create mode 100644 src/lib-mail/test-message-address.c create mode 100644 src/lib-mail/test-message-date.c create mode 100644 src/lib-mail/test-message-decoder.c create mode 100644 src/lib-mail/test-message-header-decode.c create mode 100644 src/lib-mail/test-message-header-encode.c create mode 100644 src/lib-mail/test-message-header-hash.c create mode 100644 src/lib-mail/test-message-header-parser.c create mode 100644 src/lib-mail/test-message-id.c create mode 100644 src/lib-mail/test-message-parser.c create mode 100644 src/lib-mail/test-message-part-serialize.c create mode 100644 src/lib-mail/test-message-part.c create mode 100644 src/lib-mail/test-message-search.c create mode 100644 src/lib-mail/test-message-size.c create mode 100644 src/lib-mail/test-message-snippet.c create mode 100644 src/lib-mail/test-ostream-dot.c create mode 100644 src/lib-mail/test-qp-decoder.c create mode 100644 src/lib-mail/test-qp-encoder.c create mode 100644 src/lib-mail/test-quoted-printable.c create mode 100644 src/lib-mail/test-rfc2231-parser.c create mode 100644 src/lib-mail/test-rfc822-parser.c create mode 100644 src/lib-master/Makefile.am create mode 100644 src/lib-master/Makefile.in create mode 100644 src/lib-master/anvil-client.c create mode 100644 src/lib-master/anvil-client.h create mode 100644 src/lib-master/ipc-client.c create mode 100644 src/lib-master/ipc-client.h create mode 100644 src/lib-master/ipc-server.c create mode 100644 src/lib-master/ipc-server.h create mode 100644 src/lib-master/master-auth.c create mode 100644 src/lib-master/master-auth.h create mode 100644 src/lib-master/master-instance.c create mode 100644 src/lib-master/master-instance.h create mode 100644 src/lib-master/master-interface.h create mode 100644 src/lib-master/master-login-auth.c create mode 100644 src/lib-master/master-login-auth.h create mode 100644 src/lib-master/master-login.c create mode 100644 src/lib-master/master-login.h create mode 100644 src/lib-master/master-service-haproxy.c create mode 100644 src/lib-master/master-service-private.h create mode 100644 src/lib-master/master-service-settings-cache.c create mode 100644 src/lib-master/master-service-settings-cache.h create mode 100644 src/lib-master/master-service-settings.c create mode 100644 src/lib-master/master-service-settings.h create mode 100644 src/lib-master/master-service-ssl-settings.c create mode 100644 src/lib-master/master-service-ssl-settings.h create mode 100644 src/lib-master/master-service-ssl.c create mode 100644 src/lib-master/master-service-ssl.h create mode 100644 src/lib-master/master-service.c create mode 100644 src/lib-master/master-service.h create mode 100644 src/lib-master/service-settings.h create mode 100644 src/lib-master/stats-client.c create mode 100644 src/lib-master/stats-client.h create mode 100644 src/lib-master/syslog-util.c create mode 100644 src/lib-master/syslog-util.h create mode 100644 src/lib-master/test-event-stats.c create mode 100644 src/lib-master/test-master-service-settings-cache.c create mode 100644 src/lib-oauth2/Makefile.am create mode 100644 src/lib-oauth2/Makefile.in create mode 100644 src/lib-oauth2/oauth2-jwt.c create mode 100644 src/lib-oauth2/oauth2-key-cache.c create mode 100644 src/lib-oauth2/oauth2-private.h create mode 100644 src/lib-oauth2/oauth2-request.c create mode 100644 src/lib-oauth2/oauth2.c create mode 100644 src/lib-oauth2/oauth2.h create mode 100644 src/lib-oauth2/test-oauth2-json.c create mode 100644 src/lib-oauth2/test-oauth2-jwt.c create mode 100644 src/lib-old-stats/Makefile.am create mode 100644 src/lib-old-stats/Makefile.in create mode 100644 src/lib-old-stats/stats-connection.c create mode 100644 src/lib-old-stats/stats-connection.h create mode 100644 src/lib-old-stats/stats-parser.c create mode 100644 src/lib-old-stats/stats-parser.h create mode 100644 src/lib-old-stats/stats.c create mode 100644 src/lib-old-stats/stats.h create mode 100644 src/lib-otp/Makefile.am create mode 100644 src/lib-otp/Makefile.in create mode 100644 src/lib-otp/otp-dictionary.c create mode 100644 src/lib-otp/otp-dictionary.h create mode 100644 src/lib-otp/otp-hash.c create mode 100644 src/lib-otp/otp-hash.h create mode 100644 src/lib-otp/otp-parity.c create mode 100644 src/lib-otp/otp-parity.h create mode 100644 src/lib-otp/otp-parse.c create mode 100644 src/lib-otp/otp-parse.h create mode 100644 src/lib-otp/otp.h create mode 100644 src/lib-program-client/Makefile.am create mode 100644 src/lib-program-client/Makefile.in create mode 100644 src/lib-program-client/program-client-local.c create mode 100644 src/lib-program-client/program-client-private.h create mode 100644 src/lib-program-client/program-client-remote.c create mode 100644 src/lib-program-client/program-client.c create mode 100644 src/lib-program-client/program-client.h create mode 100644 src/lib-program-client/test-program-client-local.c create mode 100644 src/lib-program-client/test-program-client-net.c create mode 100644 src/lib-program-client/test-program-client-unix.c create mode 100644 src/lib-sasl/Makefile.am create mode 100644 src/lib-sasl/Makefile.in create mode 100644 src/lib-sasl/dsasl-client-private.h create mode 100644 src/lib-sasl/dsasl-client.c create mode 100644 src/lib-sasl/dsasl-client.h create mode 100644 src/lib-sasl/mech-external.c create mode 100644 src/lib-sasl/mech-login.c create mode 100644 src/lib-sasl/mech-oauthbearer.c create mode 100644 src/lib-sasl/mech-plain.c create mode 100644 src/lib-sasl/test-sasl-client.c create mode 100644 src/lib-settings/Makefile.am create mode 100644 src/lib-settings/Makefile.in create mode 100644 src/lib-settings/settings-parser.c create mode 100644 src/lib-settings/settings-parser.h create mode 100644 src/lib-settings/settings.c create mode 100644 src/lib-settings/settings.h create mode 100644 src/lib-settings/test-settings-parser.c create mode 100644 src/lib-settings/test-settings.c create mode 100644 src/lib-smtp/Makefile.am create mode 100644 src/lib-smtp/Makefile.in create mode 100644 src/lib-smtp/fuzz-smtp-server.c create mode 100644 src/lib-smtp/smtp-address.c create mode 100644 src/lib-smtp/smtp-address.h create mode 100644 src/lib-smtp/smtp-client-command.c create mode 100644 src/lib-smtp/smtp-client-command.h create mode 100644 src/lib-smtp/smtp-client-connection.c create mode 100644 src/lib-smtp/smtp-client-connection.h create mode 100644 src/lib-smtp/smtp-client-private.h create mode 100644 src/lib-smtp/smtp-client-transaction.c create mode 100644 src/lib-smtp/smtp-client-transaction.h create mode 100644 src/lib-smtp/smtp-client.c create mode 100644 src/lib-smtp/smtp-client.h create mode 100644 src/lib-smtp/smtp-command-parser.c create mode 100644 src/lib-smtp/smtp-command-parser.h create mode 100644 src/lib-smtp/smtp-command.h create mode 100644 src/lib-smtp/smtp-common.c create mode 100644 src/lib-smtp/smtp-common.h create mode 100644 src/lib-smtp/smtp-params.c create mode 100644 src/lib-smtp/smtp-params.h create mode 100644 src/lib-smtp/smtp-parser.c create mode 100644 src/lib-smtp/smtp-parser.h create mode 100644 src/lib-smtp/smtp-reply-parser.c create mode 100644 src/lib-smtp/smtp-reply-parser.h create mode 100644 src/lib-smtp/smtp-reply.c create mode 100644 src/lib-smtp/smtp-reply.h create mode 100644 src/lib-smtp/smtp-server-cmd-auth.c create mode 100644 src/lib-smtp/smtp-server-cmd-data.c create mode 100644 src/lib-smtp/smtp-server-cmd-helo.c create mode 100644 src/lib-smtp/smtp-server-cmd-mail.c create mode 100644 src/lib-smtp/smtp-server-cmd-noop.c create mode 100644 src/lib-smtp/smtp-server-cmd-quit.c create mode 100644 src/lib-smtp/smtp-server-cmd-rcpt.c create mode 100644 src/lib-smtp/smtp-server-cmd-rset.c create mode 100644 src/lib-smtp/smtp-server-cmd-starttls.c create mode 100644 src/lib-smtp/smtp-server-cmd-vrfy.c create mode 100644 src/lib-smtp/smtp-server-cmd-xclient.c create mode 100644 src/lib-smtp/smtp-server-command.c create mode 100644 src/lib-smtp/smtp-server-connection.c create mode 100644 src/lib-smtp/smtp-server-private.h create mode 100644 src/lib-smtp/smtp-server-recipient.c create mode 100644 src/lib-smtp/smtp-server-reply.c create mode 100644 src/lib-smtp/smtp-server-transaction.c create mode 100644 src/lib-smtp/smtp-server.c create mode 100644 src/lib-smtp/smtp-server.h create mode 100644 src/lib-smtp/smtp-submit-settings.c create mode 100644 src/lib-smtp/smtp-submit-settings.h create mode 100644 src/lib-smtp/smtp-submit.c create mode 100644 src/lib-smtp/smtp-submit.h create mode 100644 src/lib-smtp/smtp-syntax.c create mode 100644 src/lib-smtp/smtp-syntax.h create mode 100755 src/lib-smtp/test-bin/sendmail-exit-1.sh create mode 100755 src/lib-smtp/test-bin/sendmail-success.sh create mode 100644 src/lib-smtp/test-smtp-address.c create mode 100644 src/lib-smtp/test-smtp-client-errors.c create mode 100644 src/lib-smtp/test-smtp-command-parser.c create mode 100644 src/lib-smtp/test-smtp-params.c create mode 100644 src/lib-smtp/test-smtp-payload.c create mode 100644 src/lib-smtp/test-smtp-reply.c create mode 100644 src/lib-smtp/test-smtp-server-errors.c create mode 100644 src/lib-smtp/test-smtp-submit.c create mode 100644 src/lib-smtp/test-smtp-syntax.c create mode 100644 src/lib-sql/Makefile.am create mode 100644 src/lib-sql/Makefile.in create mode 100644 src/lib-sql/driver-cassandra.c create mode 100644 src/lib-sql/driver-mysql.c create mode 100644 src/lib-sql/driver-pgsql.c create mode 100644 src/lib-sql/driver-sqlite.c create mode 100644 src/lib-sql/driver-sqlpool.c create mode 100644 src/lib-sql/driver-test.c create mode 100644 src/lib-sql/driver-test.h create mode 100644 src/lib-sql/sql-api-private.h create mode 100644 src/lib-sql/sql-api.c create mode 100644 src/lib-sql/sql-api.h create mode 100644 src/lib-sql/sql-db-cache.c create mode 100644 src/lib-sql/sql-db-cache.h create mode 100644 src/lib-ssl-iostream/Makefile.am create mode 100644 src/lib-ssl-iostream/Makefile.in create mode 100644 src/lib-ssl-iostream/dovecot-openssl-common.c create mode 100644 src/lib-ssl-iostream/dovecot-openssl-common.h create mode 100644 src/lib-ssl-iostream/iostream-openssl-common.c create mode 100644 src/lib-ssl-iostream/iostream-openssl-context.c create mode 100644 src/lib-ssl-iostream/iostream-openssl.c create mode 100644 src/lib-ssl-iostream/iostream-openssl.h create mode 100644 src/lib-ssl-iostream/iostream-ssl-context-cache.c create mode 100644 src/lib-ssl-iostream/iostream-ssl-private.h create mode 100644 src/lib-ssl-iostream/iostream-ssl-test.c create mode 100644 src/lib-ssl-iostream/iostream-ssl-test.h create mode 100644 src/lib-ssl-iostream/iostream-ssl.c create mode 100644 src/lib-ssl-iostream/iostream-ssl.h create mode 100644 src/lib-ssl-iostream/istream-openssl.c create mode 100644 src/lib-ssl-iostream/ostream-openssl.c create mode 100644 src/lib-ssl-iostream/test-iostream-ssl.c create mode 100644 src/lib-storage/Makefile.am create mode 100644 src/lib-storage/Makefile.in create mode 100644 src/lib-storage/fail-mail-storage.c create mode 100644 src/lib-storage/fail-mail-storage.h create mode 100644 src/lib-storage/fail-mail.c create mode 100644 src/lib-storage/fail-mailbox.c create mode 100644 src/lib-storage/index/Makefile.am create mode 100644 src/lib-storage/index/Makefile.in create mode 100644 src/lib-storage/index/dbox-common/Makefile.am create mode 100644 src/lib-storage/index/dbox-common/Makefile.in create mode 100644 src/lib-storage/index/dbox-common/dbox-attachment.c create mode 100644 src/lib-storage/index/dbox-common/dbox-attachment.h create mode 100644 src/lib-storage/index/dbox-common/dbox-file-fix.c create mode 100644 src/lib-storage/index/dbox-common/dbox-file.c create mode 100644 src/lib-storage/index/dbox-common/dbox-file.h create mode 100644 src/lib-storage/index/dbox-common/dbox-mail.c create mode 100644 src/lib-storage/index/dbox-common/dbox-mail.h create mode 100644 src/lib-storage/index/dbox-common/dbox-save.c create mode 100644 src/lib-storage/index/dbox-common/dbox-save.h create mode 100644 src/lib-storage/index/dbox-common/dbox-storage.c create mode 100644 src/lib-storage/index/dbox-common/dbox-storage.h create mode 100644 src/lib-storage/index/dbox-multi/Makefile.am create mode 100644 src/lib-storage/index/dbox-multi/Makefile.in create mode 100644 src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-file.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-file.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-mail.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-map-private.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-map.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-map.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-purge.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-save.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-settings.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-settings.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-storage.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-storage.h create mode 100644 src/lib-storage/index/dbox-multi/mdbox-sync.c create mode 100644 src/lib-storage/index/dbox-multi/mdbox-sync.h create mode 100644 src/lib-storage/index/dbox-single/Makefile.am create mode 100644 src/lib-storage/index/dbox-single/Makefile.in create mode 100644 src/lib-storage/index/dbox-single/sdbox-copy.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-file.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-file.h create mode 100644 src/lib-storage/index/dbox-single/sdbox-mail.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-save.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-storage.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-storage.h create mode 100644 src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-sync.c create mode 100644 src/lib-storage/index/dbox-single/sdbox-sync.h create mode 100644 src/lib-storage/index/imapc/Makefile.am create mode 100644 src/lib-storage/index/imapc/Makefile.in create mode 100644 src/lib-storage/index/imapc/imapc-list.c create mode 100644 src/lib-storage/index/imapc/imapc-list.h create mode 100644 src/lib-storage/index/imapc/imapc-mail-fetch.c create mode 100644 src/lib-storage/index/imapc/imapc-mail.c create mode 100644 src/lib-storage/index/imapc/imapc-mail.h create mode 100644 src/lib-storage/index/imapc/imapc-mailbox.c create mode 100644 src/lib-storage/index/imapc/imapc-save.c create mode 100644 src/lib-storage/index/imapc/imapc-search.c create mode 100644 src/lib-storage/index/imapc/imapc-search.h create mode 100644 src/lib-storage/index/imapc/imapc-settings.c create mode 100644 src/lib-storage/index/imapc/imapc-settings.h create mode 100644 src/lib-storage/index/imapc/imapc-storage.c create mode 100644 src/lib-storage/index/imapc/imapc-storage.h create mode 100644 src/lib-storage/index/imapc/imapc-sync.c create mode 100644 src/lib-storage/index/imapc/imapc-sync.h create mode 100644 src/lib-storage/index/index-attachment.c create mode 100644 src/lib-storage/index/index-attachment.h create mode 100644 src/lib-storage/index/index-attribute.c create mode 100644 src/lib-storage/index/index-mail-binary.c create mode 100644 src/lib-storage/index/index-mail-headers.c create mode 100644 src/lib-storage/index/index-mail.c create mode 100644 src/lib-storage/index/index-mail.h create mode 100644 src/lib-storage/index/index-mailbox-size.c create mode 100644 src/lib-storage/index/index-mailbox-size.h create mode 100644 src/lib-storage/index/index-pop3-uidl.c create mode 100644 src/lib-storage/index/index-pop3-uidl.h create mode 100644 src/lib-storage/index/index-rebuild.c create mode 100644 src/lib-storage/index/index-rebuild.h create mode 100644 src/lib-storage/index/index-search-mime.c create mode 100644 src/lib-storage/index/index-search-private.h create mode 100644 src/lib-storage/index/index-search-result.c create mode 100644 src/lib-storage/index/index-search-result.h create mode 100644 src/lib-storage/index/index-search.c create mode 100644 src/lib-storage/index/index-sort-private.h create mode 100644 src/lib-storage/index/index-sort-string.c create mode 100644 src/lib-storage/index/index-sort.c create mode 100644 src/lib-storage/index/index-sort.h create mode 100644 src/lib-storage/index/index-status.c create mode 100644 src/lib-storage/index/index-storage.c create mode 100644 src/lib-storage/index/index-storage.h create mode 100644 src/lib-storage/index/index-sync-changes.c create mode 100644 src/lib-storage/index/index-sync-changes.h create mode 100644 src/lib-storage/index/index-sync-private.h create mode 100644 src/lib-storage/index/index-sync-pvt.c create mode 100644 src/lib-storage/index/index-sync-search.c create mode 100644 src/lib-storage/index/index-sync.c create mode 100644 src/lib-storage/index/index-thread-finish.c create mode 100644 src/lib-storage/index/index-thread-links.c create mode 100644 src/lib-storage/index/index-thread-private.h create mode 100644 src/lib-storage/index/index-thread.c create mode 100644 src/lib-storage/index/index-transaction.c create mode 100644 src/lib-storage/index/istream-mail.c create mode 100644 src/lib-storage/index/istream-mail.h create mode 100644 src/lib-storage/index/maildir/Makefile.am create mode 100644 src/lib-storage/index/maildir/Makefile.in create mode 100644 src/lib-storage/index/maildir/maildir-copy.c create mode 100644 src/lib-storage/index/maildir/maildir-filename-flags.c create mode 100644 src/lib-storage/index/maildir/maildir-filename-flags.h create mode 100644 src/lib-storage/index/maildir/maildir-filename.c create mode 100644 src/lib-storage/index/maildir/maildir-filename.h create mode 100644 src/lib-storage/index/maildir/maildir-keywords.c create mode 100644 src/lib-storage/index/maildir/maildir-keywords.h create mode 100644 src/lib-storage/index/maildir/maildir-mail.c create mode 100644 src/lib-storage/index/maildir/maildir-save.c create mode 100644 src/lib-storage/index/maildir/maildir-settings.c create mode 100644 src/lib-storage/index/maildir/maildir-settings.h create mode 100644 src/lib-storage/index/maildir/maildir-storage.c create mode 100644 src/lib-storage/index/maildir/maildir-storage.h create mode 100644 src/lib-storage/index/maildir/maildir-sync-index.c create mode 100644 src/lib-storage/index/maildir/maildir-sync.c create mode 100644 src/lib-storage/index/maildir/maildir-sync.h create mode 100644 src/lib-storage/index/maildir/maildir-uidlist.c create mode 100644 src/lib-storage/index/maildir/maildir-uidlist.h create mode 100644 src/lib-storage/index/maildir/maildir-util.c create mode 100644 src/lib-storage/index/mbox/Makefile.am create mode 100644 src/lib-storage/index/mbox/Makefile.in create mode 100644 src/lib-storage/index/mbox/istream-raw-mbox.c create mode 100644 src/lib-storage/index/mbox/istream-raw-mbox.h create mode 100644 src/lib-storage/index/mbox/mbox-file.c create mode 100644 src/lib-storage/index/mbox/mbox-file.h create mode 100644 src/lib-storage/index/mbox/mbox-lock.c create mode 100644 src/lib-storage/index/mbox/mbox-lock.h create mode 100644 src/lib-storage/index/mbox/mbox-mail.c create mode 100644 src/lib-storage/index/mbox/mbox-md5-all.c create mode 100644 src/lib-storage/index/mbox/mbox-md5-apop3d.c create mode 100644 src/lib-storage/index/mbox/mbox-md5.h create mode 100644 src/lib-storage/index/mbox/mbox-save.c create mode 100644 src/lib-storage/index/mbox/mbox-settings.c create mode 100644 src/lib-storage/index/mbox/mbox-settings.h create mode 100644 src/lib-storage/index/mbox/mbox-storage.c create mode 100644 src/lib-storage/index/mbox/mbox-storage.h create mode 100644 src/lib-storage/index/mbox/mbox-sync-list-index.c create mode 100644 src/lib-storage/index/mbox/mbox-sync-parse.c create mode 100644 src/lib-storage/index/mbox/mbox-sync-private.h create mode 100644 src/lib-storage/index/mbox/mbox-sync-rewrite.c create mode 100644 src/lib-storage/index/mbox/mbox-sync-update.c create mode 100644 src/lib-storage/index/mbox/mbox-sync.c create mode 100644 src/lib-storage/index/pop3c/Makefile.am create mode 100644 src/lib-storage/index/pop3c/Makefile.in create mode 100644 src/lib-storage/index/pop3c/pop3c-client.c create mode 100644 src/lib-storage/index/pop3c/pop3c-client.h create mode 100644 src/lib-storage/index/pop3c/pop3c-mail.c create mode 100644 src/lib-storage/index/pop3c/pop3c-settings.c create mode 100644 src/lib-storage/index/pop3c/pop3c-settings.h create mode 100644 src/lib-storage/index/pop3c/pop3c-storage.c create mode 100644 src/lib-storage/index/pop3c/pop3c-storage.h create mode 100644 src/lib-storage/index/pop3c/pop3c-sync.c create mode 100644 src/lib-storage/index/pop3c/pop3c-sync.h create mode 100644 src/lib-storage/index/raw/Makefile.am create mode 100644 src/lib-storage/index/raw/Makefile.in create mode 100644 src/lib-storage/index/raw/raw-mail.c create mode 100644 src/lib-storage/index/raw/raw-storage.c create mode 100644 src/lib-storage/index/raw/raw-storage.h create mode 100644 src/lib-storage/index/raw/raw-sync.c create mode 100644 src/lib-storage/index/raw/raw-sync.h create mode 100644 src/lib-storage/index/shared/Makefile.am create mode 100644 src/lib-storage/index/shared/Makefile.in create mode 100644 src/lib-storage/index/shared/shared-list.c create mode 100644 src/lib-storage/index/shared/shared-storage.c create mode 100644 src/lib-storage/index/shared/shared-storage.h create mode 100644 src/lib-storage/list/Makefile.am create mode 100644 src/lib-storage/list/Makefile.in create mode 100644 src/lib-storage/list/mail-storage-list-index-rebuild.c create mode 100644 src/lib-storage/list/mailbox-list-delete.c create mode 100644 src/lib-storage/list/mailbox-list-delete.h create mode 100644 src/lib-storage/list/mailbox-list-fs-flags.c create mode 100644 src/lib-storage/list/mailbox-list-fs-iter.c create mode 100644 src/lib-storage/list/mailbox-list-fs.c create mode 100644 src/lib-storage/list/mailbox-list-fs.h create mode 100644 src/lib-storage/list/mailbox-list-index-backend.c create mode 100644 src/lib-storage/list/mailbox-list-index-iter.c create mode 100644 src/lib-storage/list/mailbox-list-index-notify.c create mode 100644 src/lib-storage/list/mailbox-list-index-status.c create mode 100644 src/lib-storage/list/mailbox-list-index-storage.h create mode 100644 src/lib-storage/list/mailbox-list-index-sync.c create mode 100644 src/lib-storage/list/mailbox-list-index-sync.h create mode 100644 src/lib-storage/list/mailbox-list-index.c create mode 100644 src/lib-storage/list/mailbox-list-index.h create mode 100644 src/lib-storage/list/mailbox-list-iter-private.h create mode 100644 src/lib-storage/list/mailbox-list-iter.c create mode 100644 src/lib-storage/list/mailbox-list-maildir-iter.c create mode 100644 src/lib-storage/list/mailbox-list-maildir.c create mode 100644 src/lib-storage/list/mailbox-list-maildir.h create mode 100644 src/lib-storage/list/mailbox-list-none.c create mode 100644 src/lib-storage/list/mailbox-list-notify-tree.c create mode 100644 src/lib-storage/list/mailbox-list-notify-tree.h create mode 100644 src/lib-storage/list/mailbox-list-subscriptions.c create mode 100644 src/lib-storage/list/mailbox-list-subscriptions.h create mode 100644 src/lib-storage/list/subscription-file.c create mode 100644 src/lib-storage/list/subscription-file.h create mode 100644 src/lib-storage/mail-autoexpunge.c create mode 100644 src/lib-storage/mail-autoexpunge.h create mode 100644 src/lib-storage/mail-copy.c create mode 100644 src/lib-storage/mail-copy.h create mode 100644 src/lib-storage/mail-duplicate.c create mode 100644 src/lib-storage/mail-duplicate.h create mode 100644 src/lib-storage/mail-error.c create mode 100644 src/lib-storage/mail-error.h create mode 100644 src/lib-storage/mail-lua.c create mode 100644 src/lib-storage/mail-namespace.c create mode 100644 src/lib-storage/mail-namespace.h create mode 100644 src/lib-storage/mail-search-args-cmdline.c create mode 100644 src/lib-storage/mail-search-args-imap.c create mode 100644 src/lib-storage/mail-search-args-simplify.c create mode 100644 src/lib-storage/mail-search-build.c create mode 100644 src/lib-storage/mail-search-build.h create mode 100644 src/lib-storage/mail-search-mime-build.c create mode 100644 src/lib-storage/mail-search-mime-build.h create mode 100644 src/lib-storage/mail-search-mime-register.c create mode 100644 src/lib-storage/mail-search-mime-register.h create mode 100644 src/lib-storage/mail-search-mime.c create mode 100644 src/lib-storage/mail-search-mime.h create mode 100644 src/lib-storage/mail-search-parser-cmdline.c create mode 100644 src/lib-storage/mail-search-parser-imap.c create mode 100644 src/lib-storage/mail-search-parser-private.h create mode 100644 src/lib-storage/mail-search-parser.c create mode 100644 src/lib-storage/mail-search-parser.h create mode 100644 src/lib-storage/mail-search-register-human.c create mode 100644 src/lib-storage/mail-search-register-imap.c create mode 100644 src/lib-storage/mail-search-register.c create mode 100644 src/lib-storage/mail-search-register.h create mode 100644 src/lib-storage/mail-search.c create mode 100644 src/lib-storage/mail-search.h create mode 100644 src/lib-storage/mail-storage-hooks.c create mode 100644 src/lib-storage/mail-storage-hooks.h create mode 100644 src/lib-storage/mail-storage-lua-private.h create mode 100644 src/lib-storage/mail-storage-lua.c create mode 100644 src/lib-storage/mail-storage-lua.h create mode 100644 src/lib-storage/mail-storage-private.h create mode 100644 src/lib-storage/mail-storage-register.c create mode 100644 src/lib-storage/mail-storage-service.c create mode 100644 src/lib-storage/mail-storage-service.h create mode 100644 src/lib-storage/mail-storage-settings.c create mode 100644 src/lib-storage/mail-storage-settings.h create mode 100644 src/lib-storage/mail-storage.c create mode 100644 src/lib-storage/mail-storage.h create mode 100644 src/lib-storage/mail-thread.c create mode 100644 src/lib-storage/mail-thread.h create mode 100644 src/lib-storage/mail-user-lua.c create mode 100644 src/lib-storage/mail-user.c create mode 100644 src/lib-storage/mail-user.h create mode 100644 src/lib-storage/mail.c create mode 100644 src/lib-storage/mailbox-attribute-internal.c create mode 100644 src/lib-storage/mailbox-attribute-internal.h create mode 100644 src/lib-storage/mailbox-attribute-lua.c create mode 100644 src/lib-storage/mailbox-attribute-private.h create mode 100644 src/lib-storage/mailbox-attribute.c create mode 100644 src/lib-storage/mailbox-attribute.h create mode 100644 src/lib-storage/mailbox-get.c create mode 100644 src/lib-storage/mailbox-guid-cache.c create mode 100644 src/lib-storage/mailbox-guid-cache.h create mode 100644 src/lib-storage/mailbox-header.c create mode 100644 src/lib-storage/mailbox-keywords.c create mode 100644 src/lib-storage/mailbox-list-iter.h create mode 100644 src/lib-storage/mailbox-list-notify.c create mode 100644 src/lib-storage/mailbox-list-notify.h create mode 100644 src/lib-storage/mailbox-list-private.h create mode 100644 src/lib-storage/mailbox-list-register.c create mode 100644 src/lib-storage/mailbox-list.c create mode 100644 src/lib-storage/mailbox-list.h create mode 100644 src/lib-storage/mailbox-lua.c create mode 100644 src/lib-storage/mailbox-match-plugin.c create mode 100644 src/lib-storage/mailbox-match-plugin.h create mode 100644 src/lib-storage/mailbox-recent-flags.c create mode 100644 src/lib-storage/mailbox-recent-flags.h create mode 100644 src/lib-storage/mailbox-search-result-private.h create mode 100644 src/lib-storage/mailbox-search-result.c create mode 100644 src/lib-storage/mailbox-tree.c create mode 100644 src/lib-storage/mailbox-tree.h create mode 100644 src/lib-storage/mailbox-uidvalidity.c create mode 100644 src/lib-storage/mailbox-uidvalidity.h create mode 100644 src/lib-storage/mailbox-watch.c create mode 100644 src/lib-storage/mailbox-watch.h create mode 100644 src/lib-storage/test-mail-search-args-imap.c create mode 100644 src/lib-storage/test-mail-search-args-simplify.c create mode 100644 src/lib-storage/test-mail-storage-common.c create mode 100644 src/lib-storage/test-mail-storage-common.h create mode 100644 src/lib-storage/test-mail-storage.c create mode 100644 src/lib-storage/test-mail.c create mode 100644 src/lib-storage/test-mailbox-get.c create mode 100644 src/lib-storage/test-mailbox-list.c create mode 100644 src/lib-test/Makefile.am create mode 100644 src/lib-test/Makefile.in create mode 100644 src/lib-test/fuzzer.c create mode 100644 src/lib-test/fuzzer.h create mode 100644 src/lib-test/ostream-final-trickle.c create mode 100644 src/lib-test/ostream-final-trickle.h create mode 100644 src/lib-test/test-common.c create mode 100644 src/lib-test/test-common.h create mode 100644 src/lib-test/test-istream.c create mode 100644 src/lib-test/test-ostream.c create mode 100644 src/lib-test/test-subprocess.c create mode 100644 src/lib-test/test-subprocess.h create mode 100644 src/lib/Makefile.am create mode 100644 src/lib/Makefile.in create mode 100644 src/lib/UnicodeData.txt create mode 100644 src/lib/aqueue.c create mode 100644 src/lib/aqueue.h create mode 100644 src/lib/array-decl.h create mode 100644 src/lib/array.c create mode 100644 src/lib/array.h create mode 100644 src/lib/askpass.c create mode 100644 src/lib/askpass.h create mode 100644 src/lib/backtrace-string.c create mode 100644 src/lib/backtrace-string.h create mode 100644 src/lib/base32.c create mode 100644 src/lib/base32.h create mode 100644 src/lib/base64.c create mode 100644 src/lib/base64.h create mode 100644 src/lib/bits.c create mode 100644 src/lib/bits.h create mode 100644 src/lib/bsearch-insert-pos.c create mode 100644 src/lib/bsearch-insert-pos.h create mode 100644 src/lib/buffer-istream.c create mode 100644 src/lib/buffer.c create mode 100644 src/lib/buffer.h create mode 100644 src/lib/byteorder.h create mode 100644 src/lib/child-wait.c create mode 100644 src/lib/child-wait.h create mode 100644 src/lib/compat.c create mode 100644 src/lib/compat.h create mode 100644 src/lib/connection.c create mode 100644 src/lib/connection.h create mode 100644 src/lib/cpu-limit.c create mode 100644 src/lib/cpu-limit.h create mode 100644 src/lib/crc32.c create mode 100644 src/lib/crc32.h create mode 100644 src/lib/data-stack.c create mode 100644 src/lib/data-stack.h create mode 100644 src/lib/eacces-error.c create mode 100644 src/lib/eacces-error.h create mode 100644 src/lib/env-util.c create mode 100644 src/lib/env-util.h create mode 100644 src/lib/event-filter-lexer.c create mode 100644 src/lib/event-filter-lexer.l create mode 100644 src/lib/event-filter-parser.c create mode 100644 src/lib/event-filter-parser.h create mode 100644 src/lib/event-filter-parser.y create mode 100644 src/lib/event-filter-private.h create mode 100644 src/lib/event-filter.c create mode 100644 src/lib/event-filter.h create mode 100644 src/lib/event-log.c create mode 100644 src/lib/event-log.h create mode 100644 src/lib/execv-const.c create mode 100644 src/lib/execv-const.h create mode 100644 src/lib/failures-private.h create mode 100644 src/lib/failures.c create mode 100644 src/lib/failures.h create mode 100644 src/lib/fd-util.c create mode 100644 src/lib/fd-util.h create mode 100644 src/lib/fdatasync-path.c create mode 100644 src/lib/fdatasync-path.h create mode 100644 src/lib/fdpass.c create mode 100644 src/lib/fdpass.h create mode 100644 src/lib/file-cache.c create mode 100644 src/lib/file-cache.h create mode 100644 src/lib/file-copy.c create mode 100644 src/lib/file-copy.h create mode 100644 src/lib/file-create-locked.c create mode 100644 src/lib/file-create-locked.h create mode 100644 src/lib/file-dotlock.c create mode 100644 src/lib/file-dotlock.h create mode 100644 src/lib/file-lock.c create mode 100644 src/lib/file-lock.h create mode 100644 src/lib/file-set-size.c create mode 100644 src/lib/file-set-size.h create mode 100644 src/lib/fsync-mode.h create mode 100644 src/lib/guid.c create mode 100644 src/lib/guid.h create mode 100644 src/lib/hash-decl.h create mode 100644 src/lib/hash-format.c create mode 100644 src/lib/hash-format.h create mode 100644 src/lib/hash-method.c create mode 100644 src/lib/hash-method.h create mode 100644 src/lib/hash.c create mode 100644 src/lib/hash.h create mode 100644 src/lib/hash2.c create mode 100644 src/lib/hash2.h create mode 100644 src/lib/hex-binary.c create mode 100644 src/lib/hex-binary.h create mode 100644 src/lib/hex-dec.c create mode 100644 src/lib/hex-dec.h create mode 100644 src/lib/hmac-cram-md5.c create mode 100644 src/lib/hmac-cram-md5.h create mode 100644 src/lib/hmac.c create mode 100644 src/lib/hmac.h create mode 100644 src/lib/home-expand.c create mode 100644 src/lib/home-expand.h create mode 100644 src/lib/hook-build.c create mode 100644 src/lib/hook-build.h create mode 100644 src/lib/hostpid.c create mode 100644 src/lib/hostpid.h create mode 100644 src/lib/imem.c create mode 100644 src/lib/imem.h create mode 100644 src/lib/ioloop-epoll.c create mode 100644 src/lib/ioloop-iolist.c create mode 100644 src/lib/ioloop-iolist.h create mode 100644 src/lib/ioloop-kqueue.c create mode 100644 src/lib/ioloop-notify-fd.c create mode 100644 src/lib/ioloop-notify-fd.h create mode 100644 src/lib/ioloop-notify-inotify.c create mode 100644 src/lib/ioloop-notify-kqueue.c create mode 100644 src/lib/ioloop-notify-none.c create mode 100644 src/lib/ioloop-poll.c create mode 100644 src/lib/ioloop-private.h create mode 100644 src/lib/ioloop-select.c create mode 100644 src/lib/ioloop.c create mode 100644 src/lib/ioloop.h create mode 100644 src/lib/iostream-private.h create mode 100644 src/lib/iostream-proxy.c create mode 100644 src/lib/iostream-proxy.h create mode 100644 src/lib/iostream-pump.c create mode 100644 src/lib/iostream-pump.h create mode 100644 src/lib/iostream-rawlog-private.h create mode 100644 src/lib/iostream-rawlog.c create mode 100644 src/lib/iostream-rawlog.h create mode 100644 src/lib/iostream-temp.c create mode 100644 src/lib/iostream-temp.h create mode 100644 src/lib/iostream.c create mode 100644 src/lib/iostream.h create mode 100644 src/lib/ipwd.c create mode 100644 src/lib/ipwd.h create mode 100644 src/lib/iso8601-date.c create mode 100644 src/lib/iso8601-date.h create mode 100644 src/lib/istream-base64-decoder.c create mode 100644 src/lib/istream-base64-encoder.c create mode 100644 src/lib/istream-base64.h create mode 100644 src/lib/istream-callback.c create mode 100644 src/lib/istream-callback.h create mode 100644 src/lib/istream-chain.c create mode 100644 src/lib/istream-chain.h create mode 100644 src/lib/istream-concat.c create mode 100644 src/lib/istream-concat.h create mode 100644 src/lib/istream-crlf.c create mode 100644 src/lib/istream-crlf.h create mode 100644 src/lib/istream-data.c create mode 100644 src/lib/istream-failure-at.c create mode 100644 src/lib/istream-failure-at.h create mode 100644 src/lib/istream-file-private.h create mode 100644 src/lib/istream-file.c create mode 100644 src/lib/istream-hash.c create mode 100644 src/lib/istream-hash.h create mode 100644 src/lib/istream-jsonstr.c create mode 100644 src/lib/istream-jsonstr.h create mode 100644 src/lib/istream-limit.c create mode 100644 src/lib/istream-multiplex.c create mode 100644 src/lib/istream-multiplex.h create mode 100644 src/lib/istream-private.h create mode 100644 src/lib/istream-rawlog.c create mode 100644 src/lib/istream-rawlog.h create mode 100644 src/lib/istream-seekable.c create mode 100644 src/lib/istream-seekable.h create mode 100644 src/lib/istream-sized.c create mode 100644 src/lib/istream-sized.h create mode 100644 src/lib/istream-tee.c create mode 100644 src/lib/istream-tee.h create mode 100644 src/lib/istream-timeout.c create mode 100644 src/lib/istream-timeout.h create mode 100644 src/lib/istream-try.c create mode 100644 src/lib/istream-try.h create mode 100644 src/lib/istream-unix.c create mode 100644 src/lib/istream-unix.h create mode 100644 src/lib/istream.c create mode 100644 src/lib/istream.h create mode 100644 src/lib/json-parser.c create mode 100644 src/lib/json-parser.h create mode 100644 src/lib/json-tree.c create mode 100644 src/lib/json-tree.h create mode 100644 src/lib/lib-event-private.h create mode 100644 src/lib/lib-event.c create mode 100644 src/lib/lib-event.h create mode 100644 src/lib/lib-signals.c create mode 100644 src/lib/lib-signals.h create mode 100644 src/lib/lib.c create mode 100644 src/lib/lib.h create mode 100644 src/lib/llist.h create mode 100644 src/lib/log-throttle.c create mode 100644 src/lib/log-throttle.h create mode 100644 src/lib/macros.h create mode 100644 src/lib/malloc-overflow.h create mode 100644 src/lib/md4.c create mode 100644 src/lib/md4.h create mode 100644 src/lib/md5.c create mode 100644 src/lib/md5.h create mode 100644 src/lib/memarea.c create mode 100644 src/lib/memarea.h create mode 100644 src/lib/mempool-allocfree.c create mode 100644 src/lib/mempool-alloconly.c create mode 100644 src/lib/mempool-datastack.c create mode 100644 src/lib/mempool-system.c create mode 100644 src/lib/mempool-unsafe-datastack.c create mode 100644 src/lib/mempool.c create mode 100644 src/lib/mempool.h create mode 100644 src/lib/mkdir-parents.c create mode 100644 src/lib/mkdir-parents.h create mode 100644 src/lib/mmap-anon.c create mode 100644 src/lib/mmap-util.c create mode 100644 src/lib/mmap-util.h create mode 100644 src/lib/module-context.h create mode 100644 src/lib/module-dir.c create mode 100644 src/lib/module-dir.h create mode 100644 src/lib/mountpoint.c create mode 100644 src/lib/mountpoint.h create mode 100644 src/lib/net.c create mode 100644 src/lib/net.h create mode 100644 src/lib/nfs-workarounds.c create mode 100644 src/lib/nfs-workarounds.h create mode 100644 src/lib/numpack.c create mode 100644 src/lib/numpack.h create mode 100644 src/lib/ostream-buffer.c create mode 100644 src/lib/ostream-failure-at.c create mode 100644 src/lib/ostream-failure-at.h create mode 100644 src/lib/ostream-file-private.h create mode 100644 src/lib/ostream-file.c create mode 100644 src/lib/ostream-hash.c create mode 100644 src/lib/ostream-hash.h create mode 100644 src/lib/ostream-multiplex.c create mode 100644 src/lib/ostream-multiplex.h create mode 100644 src/lib/ostream-null.c create mode 100644 src/lib/ostream-null.h create mode 100644 src/lib/ostream-private.h create mode 100644 src/lib/ostream-rawlog.c create mode 100644 src/lib/ostream-rawlog.h create mode 100644 src/lib/ostream-unix.c create mode 100644 src/lib/ostream-unix.h create mode 100644 src/lib/ostream-wrapper.c create mode 100644 src/lib/ostream-wrapper.h create mode 100644 src/lib/ostream.c create mode 100644 src/lib/ostream.h create mode 100644 src/lib/path-util.c create mode 100644 src/lib/path-util.h create mode 100644 src/lib/pkcs5.c create mode 100644 src/lib/pkcs5.h create mode 100644 src/lib/primes.c create mode 100644 src/lib/primes.h create mode 100644 src/lib/printf-format-fix.c create mode 100644 src/lib/printf-format-fix.h create mode 100644 src/lib/priorityq.c create mode 100644 src/lib/priorityq.h create mode 100644 src/lib/process-stat.c create mode 100644 src/lib/process-stat.h create mode 100644 src/lib/process-title.c create mode 100644 src/lib/process-title.h create mode 100644 src/lib/rand.c create mode 100644 src/lib/randgen.c create mode 100644 src/lib/randgen.h create mode 100644 src/lib/read-full.c create mode 100644 src/lib/read-full.h create mode 100644 src/lib/restrict-access.c create mode 100644 src/lib/restrict-access.h create mode 100644 src/lib/restrict-process-size.c create mode 100644 src/lib/restrict-process-size.h create mode 100644 src/lib/safe-memset.c create mode 100644 src/lib/safe-memset.h create mode 100644 src/lib/safe-mkdir.c create mode 100644 src/lib/safe-mkdir.h create mode 100644 src/lib/safe-mkstemp.c create mode 100644 src/lib/safe-mkstemp.h create mode 100644 src/lib/sendfile-util.c create mode 100644 src/lib/sendfile-util.h create mode 100644 src/lib/seq-range-array.c create mode 100644 src/lib/seq-range-array.h create mode 100644 src/lib/seq-set-builder.c create mode 100644 src/lib/seq-set-builder.h create mode 100644 src/lib/sha-common.h create mode 100644 src/lib/sha1.c create mode 100644 src/lib/sha1.h create mode 100644 src/lib/sha2.c create mode 100644 src/lib/sha2.h create mode 100644 src/lib/sha3.c create mode 100644 src/lib/sha3.h create mode 100644 src/lib/sleep.c create mode 100644 src/lib/sleep.h create mode 100644 src/lib/sort.c create mode 100644 src/lib/sort.h create mode 100644 src/lib/stats-dist.c create mode 100644 src/lib/stats-dist.h create mode 100644 src/lib/str-find.c create mode 100644 src/lib/str-find.h create mode 100644 src/lib/str-sanitize.c create mode 100644 src/lib/str-sanitize.h create mode 100644 src/lib/str-table.c create mode 100644 src/lib/str-table.h create mode 100644 src/lib/str.c create mode 100644 src/lib/str.h create mode 100644 src/lib/strescape.c create mode 100644 src/lib/strescape.h create mode 100644 src/lib/strfuncs.c create mode 100644 src/lib/strfuncs.h create mode 100644 src/lib/strnum.c create mode 100644 src/lib/strnum.h create mode 100644 src/lib/test-aqueue.c create mode 100644 src/lib/test-array.c create mode 100644 src/lib/test-backtrace.c create mode 100644 src/lib/test-base32.c create mode 100644 src/lib/test-base64.c create mode 100644 src/lib/test-bits.c create mode 100644 src/lib/test-bsearch-insert-pos.c create mode 100644 src/lib/test-buffer-istream.c create mode 100644 src/lib/test-buffer.c create mode 100644 src/lib/test-byteorder.c create mode 100644 src/lib/test-connection.c create mode 100644 src/lib/test-cpu-limit.c create mode 100644 src/lib/test-crc32.c create mode 100644 src/lib/test-data-stack.c create mode 100644 src/lib/test-env-util.c create mode 100644 src/lib/test-event-category-register.c create mode 100644 src/lib/test-event-filter-expr.c create mode 100644 src/lib/test-event-filter-merge.c create mode 100644 src/lib/test-event-filter-parser.c create mode 100644 src/lib/test-event-filter.c create mode 100644 src/lib/test-event-flatten.c create mode 100644 src/lib/test-event-log.c create mode 100644 src/lib/test-failures.c create mode 100644 src/lib/test-fd-util.c create mode 100644 src/lib/test-file-cache.c create mode 100644 src/lib/test-file-create-locked.c create mode 100644 src/lib/test-guid.c create mode 100644 src/lib/test-hash-format.c create mode 100644 src/lib/test-hash-method.c create mode 100644 src/lib/test-hash.c create mode 100644 src/lib/test-hex-binary.c create mode 100644 src/lib/test-hmac.c create mode 100644 src/lib/test-imem.c create mode 100644 src/lib/test-ioloop.c create mode 100644 src/lib/test-iostream-proxy.c create mode 100644 src/lib/test-iostream-pump.c create mode 100644 src/lib/test-iostream-temp.c create mode 100644 src/lib/test-iso8601-date.c create mode 100644 src/lib/test-istream-base64-decoder.c create mode 100644 src/lib/test-istream-base64-encoder.c create mode 100644 src/lib/test-istream-chain.c create mode 100644 src/lib/test-istream-concat.c create mode 100644 src/lib/test-istream-crlf.c create mode 100644 src/lib/test-istream-failure-at.c create mode 100644 src/lib/test-istream-jsonstr.c create mode 100644 src/lib/test-istream-multiplex.c create mode 100644 src/lib/test-istream-seekable.c create mode 100644 src/lib/test-istream-sized.c create mode 100644 src/lib/test-istream-tee.c create mode 100644 src/lib/test-istream-try.c create mode 100644 src/lib/test-istream-unix.c create mode 100644 src/lib/test-istream.c create mode 100644 src/lib/test-json-parser.c create mode 100644 src/lib/test-json-tree.c create mode 100644 src/lib/test-lib-event.c create mode 100644 src/lib/test-lib-signals.c create mode 100644 src/lib/test-lib.c create mode 100644 src/lib/test-lib.h create mode 100644 src/lib/test-lib.inc create mode 100644 src/lib/test-llist.c create mode 100644 src/lib/test-log-throttle.c create mode 100644 src/lib/test-macros.c create mode 100644 src/lib/test-malloc-overflow.c create mode 100644 src/lib/test-memarea.c create mode 100644 src/lib/test-mempool-allocfree.c create mode 100644 src/lib/test-mempool-alloconly.c create mode 100644 src/lib/test-mempool.c create mode 100644 src/lib/test-multiplex.c create mode 100644 src/lib/test-net.c create mode 100644 src/lib/test-numpack.c create mode 100644 src/lib/test-ostream-buffer.c create mode 100644 src/lib/test-ostream-failure-at.c create mode 100644 src/lib/test-ostream-file.c create mode 100644 src/lib/test-ostream-multiplex.c create mode 100644 src/lib/test-path-util.c create mode 100644 src/lib/test-pkcs5.c create mode 100644 src/lib/test-primes.c create mode 100644 src/lib/test-printf-format-fix.c create mode 100644 src/lib/test-priorityq.c create mode 100644 src/lib/test-random.c create mode 100644 src/lib/test-seq-range-array.c create mode 100644 src/lib/test-seq-set-builder.c create mode 100644 src/lib/test-stats-dist.c create mode 100644 src/lib/test-str-find.c create mode 100644 src/lib/test-str-sanitize.c create mode 100644 src/lib/test-str-table.c create mode 100644 src/lib/test-str.c create mode 100644 src/lib/test-strescape.c create mode 100644 src/lib/test-strfuncs.c create mode 100644 src/lib/test-strnum.c create mode 100644 src/lib/test-time-util.c create mode 100644 src/lib/test-unichar.c create mode 100644 src/lib/test-uri.c create mode 100644 src/lib/test-utc-mktime.c create mode 100644 src/lib/test-var-expand.c create mode 100644 src/lib/test-wildcard-match.c create mode 100644 src/lib/time-util.c create mode 100644 src/lib/time-util.h create mode 100644 src/lib/unichar.c create mode 100644 src/lib/unichar.h create mode 100644 src/lib/unicodemap.c create mode 100755 src/lib/unicodemap.pl create mode 100644 src/lib/unix-socket-create.c create mode 100644 src/lib/unix-socket-create.h create mode 100644 src/lib/unlink-directory.c create mode 100644 src/lib/unlink-directory.h create mode 100644 src/lib/unlink-old-files.c create mode 100644 src/lib/unlink-old-files.h create mode 100644 src/lib/uri-util.c create mode 100644 src/lib/uri-util.h create mode 100644 src/lib/utc-mktime.c create mode 100644 src/lib/utc-mktime.h create mode 100644 src/lib/utc-offset.c create mode 100644 src/lib/utc-offset.h create mode 100644 src/lib/var-expand-if.c create mode 100644 src/lib/var-expand-private.h create mode 100644 src/lib/var-expand.c create mode 100644 src/lib/var-expand.h create mode 100644 src/lib/wildcard-match.c create mode 100644 src/lib/wildcard-match.h create mode 100644 src/lib/write-full.c create mode 100644 src/lib/write-full.h create mode 100644 src/lmtp/Makefile.am create mode 100644 src/lmtp/Makefile.in create mode 100644 src/lmtp/lmtp-client.c create mode 100644 src/lmtp/lmtp-client.h create mode 100644 src/lmtp/lmtp-commands.c create mode 100644 src/lmtp/lmtp-commands.h create mode 100644 src/lmtp/lmtp-common.h create mode 100644 src/lmtp/lmtp-local.c create mode 100644 src/lmtp/lmtp-local.h create mode 100644 src/lmtp/lmtp-proxy.c create mode 100644 src/lmtp/lmtp-proxy.h create mode 100644 src/lmtp/lmtp-recipient.c create mode 100644 src/lmtp/lmtp-recipient.h create mode 100644 src/lmtp/lmtp-settings.c create mode 100644 src/lmtp/lmtp-settings.h create mode 100644 src/lmtp/main.c create mode 100644 src/log/Makefile.am create mode 100644 src/log/Makefile.in create mode 100644 src/log/doveadm-connection.c create mode 100644 src/log/doveadm-connection.h create mode 100644 src/log/log-connection.c create mode 100644 src/log/log-connection.h create mode 100644 src/log/log-error-buffer.c create mode 100644 src/log/log-error-buffer.h create mode 100644 src/log/log-settings.c create mode 100644 src/log/main.c create mode 100644 src/login-common/Makefile.am create mode 100644 src/login-common/Makefile.in create mode 100644 src/login-common/access-lookup.c create mode 100644 src/login-common/access-lookup.h create mode 100644 src/login-common/client-common-auth.c create mode 100644 src/login-common/client-common.c create mode 100644 src/login-common/client-common.h create mode 100644 src/login-common/login-common.h create mode 100644 src/login-common/login-proxy-state.c create mode 100644 src/login-common/login-proxy-state.h create mode 100644 src/login-common/login-proxy.c create mode 100644 src/login-common/login-proxy.h create mode 100644 src/login-common/login-settings.c create mode 100644 src/login-common/login-settings.h create mode 100644 src/login-common/main.c create mode 100644 src/login-common/sasl-server.c create mode 100644 src/login-common/sasl-server.h create mode 100644 src/master/Makefile.am create mode 100644 src/master/Makefile.in create mode 100644 src/master/capabilities-posix.c create mode 100644 src/master/capabilities.h create mode 100644 src/master/common.h create mode 100644 src/master/dup2-array.c create mode 100644 src/master/dup2-array.h create mode 100644 src/master/main.c create mode 100644 src/master/master-client.c create mode 100644 src/master/master-client.h create mode 100644 src/master/master-settings.c create mode 100644 src/master/master-settings.h create mode 100644 src/master/service-anvil.c create mode 100644 src/master/service-anvil.h create mode 100644 src/master/service-listen.c create mode 100644 src/master/service-listen.h create mode 100644 src/master/service-log.c create mode 100644 src/master/service-log.h create mode 100644 src/master/service-monitor.c create mode 100644 src/master/service-monitor.h create mode 100644 src/master/service-process-notify.c create mode 100644 src/master/service-process-notify.h create mode 100644 src/master/service-process.c create mode 100644 src/master/service-process.h create mode 100644 src/master/service.c create mode 100644 src/master/service.h create mode 100644 src/master/test-auth-client.c create mode 100644 src/master/test-auth-master.c create mode 100644 src/master/test-master-login-auth.c create mode 100644 src/old-stats/Makefile.am create mode 100644 src/old-stats/Makefile.in create mode 100644 src/old-stats/client-export.c create mode 100644 src/old-stats/client-export.h create mode 100644 src/old-stats/client-reset.c create mode 100644 src/old-stats/client-reset.h create mode 100644 src/old-stats/client.c create mode 100644 src/old-stats/client.h create mode 100644 src/old-stats/fifo-input-connection.c create mode 100644 src/old-stats/fifo-input-connection.h create mode 100644 src/old-stats/global-memory.c create mode 100644 src/old-stats/global-memory.h create mode 100644 src/old-stats/mail-command.c create mode 100644 src/old-stats/mail-command.h create mode 100644 src/old-stats/mail-domain.c create mode 100644 src/old-stats/mail-domain.h create mode 100644 src/old-stats/mail-ip.c create mode 100644 src/old-stats/mail-ip.h create mode 100644 src/old-stats/mail-session.c create mode 100644 src/old-stats/mail-session.h create mode 100644 src/old-stats/mail-stats.c create mode 100644 src/old-stats/mail-stats.h create mode 100644 src/old-stats/mail-user.c create mode 100644 src/old-stats/mail-user.h create mode 100644 src/old-stats/main.c create mode 100644 src/old-stats/stats-carbon.c create mode 100644 src/old-stats/stats-carbon.h create mode 100644 src/old-stats/stats-settings.c create mode 100644 src/old-stats/stats-settings.h create mode 100644 src/plugins/Makefile.am create mode 100644 src/plugins/Makefile.in create mode 100644 src/plugins/acl/Makefile.am create mode 100644 src/plugins/acl/Makefile.in create mode 100644 src/plugins/acl/acl-api-private.h create mode 100644 src/plugins/acl/acl-api.c create mode 100644 src/plugins/acl/acl-api.h create mode 100644 src/plugins/acl/acl-attributes.c create mode 100644 src/plugins/acl/acl-backend-vfile-acllist.c create mode 100644 src/plugins/acl/acl-backend-vfile-update.c create mode 100644 src/plugins/acl/acl-backend-vfile.c create mode 100644 src/plugins/acl/acl-backend-vfile.h create mode 100644 src/plugins/acl/acl-backend.c create mode 100644 src/plugins/acl/acl-cache.c create mode 100644 src/plugins/acl/acl-cache.h create mode 100644 src/plugins/acl/acl-global-file.c create mode 100644 src/plugins/acl/acl-global-file.h create mode 100644 src/plugins/acl/acl-lookup-dict.c create mode 100644 src/plugins/acl/acl-lookup-dict.h create mode 100644 src/plugins/acl/acl-mailbox-list.c create mode 100644 src/plugins/acl/acl-mailbox.c create mode 100644 src/plugins/acl/acl-plugin.c create mode 100644 src/plugins/acl/acl-plugin.h create mode 100644 src/plugins/acl/acl-shared-storage.c create mode 100644 src/plugins/acl/acl-shared-storage.h create mode 100644 src/plugins/acl/acl-storage.c create mode 100644 src/plugins/acl/acl-storage.h create mode 100644 src/plugins/acl/doveadm-acl.c create mode 100644 src/plugins/acl/test-acl.c create mode 100644 src/plugins/apparmor/Makefile.am create mode 100644 src/plugins/apparmor/Makefile.in create mode 100644 src/plugins/apparmor/apparmor-plugin.c create mode 100644 src/plugins/charset-alias/Makefile.am create mode 100644 src/plugins/charset-alias/Makefile.in create mode 100644 src/plugins/charset-alias/charset-alias-plugin.c create mode 100644 src/plugins/charset-alias/charset-alias-plugin.h create mode 100644 src/plugins/fs-compress/Makefile.am create mode 100644 src/plugins/fs-compress/Makefile.in create mode 100644 src/plugins/fs-compress/fs-compress.c create mode 100644 src/plugins/fts-lucene/Makefile.am create mode 100644 src/plugins/fts-lucene/Makefile.in create mode 100644 src/plugins/fts-lucene/Snowball.cc create mode 100644 src/plugins/fts-lucene/SnowballAnalyzer.h create mode 100644 src/plugins/fts-lucene/SnowballFilter.h create mode 100644 src/plugins/fts-lucene/doveadm-fts-lucene.c create mode 100644 src/plugins/fts-lucene/fts-backend-lucene.c create mode 100644 src/plugins/fts-lucene/fts-lucene-plugin.c create mode 100644 src/plugins/fts-lucene/fts-lucene-plugin.h create mode 100644 src/plugins/fts-lucene/lucene-wrapper.cc create mode 100644 src/plugins/fts-lucene/lucene-wrapper.h create mode 100644 src/plugins/fts-lucene/textcat.conf create mode 100644 src/plugins/fts-solr/Makefile.am create mode 100644 src/plugins/fts-solr/Makefile.in create mode 100644 src/plugins/fts-solr/fts-backend-solr-old.c create mode 100644 src/plugins/fts-solr/fts-backend-solr.c create mode 100644 src/plugins/fts-solr/fts-solr-plugin.c create mode 100644 src/plugins/fts-solr/fts-solr-plugin.h create mode 100644 src/plugins/fts-solr/solr-connection.c create mode 100644 src/plugins/fts-solr/solr-connection.h create mode 100644 src/plugins/fts-solr/solr-response.c create mode 100644 src/plugins/fts-solr/solr-response.h create mode 100644 src/plugins/fts-solr/test-solr-response.c create mode 100644 src/plugins/fts-squat/Makefile.am create mode 100644 src/plugins/fts-squat/Makefile.in create mode 100644 src/plugins/fts-squat/fts-backend-squat.c create mode 100644 src/plugins/fts-squat/fts-squat-plugin.c create mode 100644 src/plugins/fts-squat/fts-squat-plugin.h create mode 100644 src/plugins/fts-squat/squat-test.c create mode 100644 src/plugins/fts-squat/squat-trie-private.h create mode 100644 src/plugins/fts-squat/squat-trie.c create mode 100644 src/plugins/fts-squat/squat-trie.h create mode 100644 src/plugins/fts-squat/squat-uidlist.c create mode 100644 src/plugins/fts-squat/squat-uidlist.h create mode 100644 src/plugins/fts/Makefile.am create mode 100644 src/plugins/fts/Makefile.in create mode 100755 src/plugins/fts/decode2text.sh create mode 100644 src/plugins/fts/doveadm-dump-fts-expunge-log.c create mode 100644 src/plugins/fts/doveadm-fts.c create mode 100644 src/plugins/fts/doveadm-fts.h create mode 100644 src/plugins/fts/fts-api-private.h create mode 100644 src/plugins/fts/fts-api.c create mode 100644 src/plugins/fts/fts-api.h create mode 100644 src/plugins/fts/fts-build-mail.c create mode 100644 src/plugins/fts/fts-build-mail.h create mode 100644 src/plugins/fts/fts-expunge-log.c create mode 100644 src/plugins/fts/fts-expunge-log.h create mode 100644 src/plugins/fts/fts-indexer.c create mode 100644 src/plugins/fts/fts-indexer.h create mode 100644 src/plugins/fts/fts-parser-html.c create mode 100644 src/plugins/fts/fts-parser-script.c create mode 100644 src/plugins/fts/fts-parser-tika.c create mode 100644 src/plugins/fts/fts-parser.c create mode 100644 src/plugins/fts/fts-parser.h create mode 100644 src/plugins/fts/fts-plugin.c create mode 100644 src/plugins/fts/fts-plugin.h create mode 100644 src/plugins/fts/fts-search-args.c create mode 100644 src/plugins/fts/fts-search-args.h create mode 100644 src/plugins/fts/fts-search-serialize.c create mode 100644 src/plugins/fts/fts-search-serialize.h create mode 100644 src/plugins/fts/fts-search.c create mode 100644 src/plugins/fts/fts-storage.c create mode 100644 src/plugins/fts/fts-storage.h create mode 100644 src/plugins/fts/fts-user.c create mode 100644 src/plugins/fts/fts-user.h create mode 100644 src/plugins/fts/xml2text.c create mode 100644 src/plugins/imap-acl/Makefile.am create mode 100644 src/plugins/imap-acl/Makefile.in create mode 100644 src/plugins/imap-acl/imap-acl-plugin.c create mode 100644 src/plugins/imap-acl/imap-acl-plugin.h create mode 100644 src/plugins/imap-old-stats/Makefile.am create mode 100644 src/plugins/imap-old-stats/Makefile.in create mode 100644 src/plugins/imap-old-stats/imap-stats-plugin.c create mode 100644 src/plugins/imap-old-stats/imap-stats-plugin.h create mode 100644 src/plugins/imap-quota/Makefile.am create mode 100644 src/plugins/imap-quota/Makefile.in create mode 100644 src/plugins/imap-quota/imap-quota-plugin.c create mode 100644 src/plugins/imap-quota/imap-quota-plugin.h create mode 100644 src/plugins/imap-zlib/Makefile.am create mode 100644 src/plugins/imap-zlib/Makefile.in create mode 100644 src/plugins/imap-zlib/imap-zlib-plugin.c create mode 100644 src/plugins/imap-zlib/imap-zlib-plugin.h create mode 100644 src/plugins/last-login/Makefile.am create mode 100644 src/plugins/last-login/Makefile.in create mode 100644 src/plugins/last-login/last-login-plugin.c create mode 100644 src/plugins/last-login/last-login-plugin.h create mode 100644 src/plugins/lazy-expunge/Makefile.am create mode 100644 src/plugins/lazy-expunge/Makefile.in create mode 100644 src/plugins/lazy-expunge/lazy-expunge-plugin.c create mode 100644 src/plugins/lazy-expunge/lazy-expunge-plugin.h create mode 100644 src/plugins/listescape/Makefile.am create mode 100644 src/plugins/listescape/Makefile.in create mode 100644 src/plugins/listescape/listescape-plugin.c create mode 100644 src/plugins/listescape/listescape-plugin.h create mode 100644 src/plugins/mail-crypt/Makefile.am create mode 100644 src/plugins/mail-crypt/Makefile.in create mode 100644 src/plugins/mail-crypt/doveadm-mail-crypt.c create mode 100644 src/plugins/mail-crypt/fs-crypt-common.c create mode 100644 src/plugins/mail-crypt/fs-crypt-settings.c create mode 100644 src/plugins/mail-crypt/fs-crypt-settings.h create mode 100644 src/plugins/mail-crypt/fs-crypt.c create mode 100644 src/plugins/mail-crypt/fs-mail-crypt.c create mode 100644 src/plugins/mail-crypt/mail-crypt-acl-plugin.c create mode 100644 src/plugins/mail-crypt/mail-crypt-common.h create mode 100644 src/plugins/mail-crypt/mail-crypt-global-key.c create mode 100644 src/plugins/mail-crypt/mail-crypt-global-key.h create mode 100644 src/plugins/mail-crypt/mail-crypt-key.c create mode 100644 src/plugins/mail-crypt/mail-crypt-key.h create mode 100644 src/plugins/mail-crypt/mail-crypt-plugin.c create mode 100644 src/plugins/mail-crypt/mail-crypt-plugin.h create mode 100644 src/plugins/mail-crypt/mail-crypt-pluginenv.c create mode 100644 src/plugins/mail-crypt/mail-crypt-userenv.c create mode 100644 src/plugins/mail-crypt/test-mail-global-key.c create mode 100644 src/plugins/mail-crypt/test-mail-key.c create mode 100644 src/plugins/mail-log/Makefile.am create mode 100644 src/plugins/mail-log/Makefile.in create mode 100644 src/plugins/mail-log/mail-log-plugin.c create mode 100644 src/plugins/mail-log/mail-log-plugin.h create mode 100644 src/plugins/mail-lua/Makefile.am create mode 100644 src/plugins/mail-lua/Makefile.in create mode 100644 src/plugins/mail-lua/mail-lua-plugin.c create mode 100644 src/plugins/mail-lua/mail-lua-plugin.h create mode 100644 src/plugins/mailbox-alias/Makefile.am create mode 100644 src/plugins/mailbox-alias/Makefile.in create mode 100644 src/plugins/mailbox-alias/mailbox-alias-plugin.c create mode 100644 src/plugins/mailbox-alias/mailbox-alias-plugin.h create mode 100644 src/plugins/notify-status/Makefile.am create mode 100644 src/plugins/notify-status/Makefile.in create mode 100644 src/plugins/notify-status/notify-status-plugin.c create mode 100644 src/plugins/notify/Makefile.am create mode 100644 src/plugins/notify/Makefile.in create mode 100644 src/plugins/notify/notify-plugin-private.h create mode 100644 src/plugins/notify/notify-plugin.c create mode 100644 src/plugins/notify/notify-plugin.h create mode 100644 src/plugins/notify/notify-storage.c create mode 100644 src/plugins/old-stats/Makefile.am create mode 100644 src/plugins/old-stats/Makefile.in create mode 100644 src/plugins/old-stats/mail-stats-connection.c create mode 100644 src/plugins/old-stats/mail-stats-connection.h create mode 100644 src/plugins/old-stats/mail-stats-fill.c create mode 100644 src/plugins/old-stats/mail-stats.c create mode 100644 src/plugins/old-stats/mail-stats.h create mode 100644 src/plugins/old-stats/stats-plugin.c create mode 100644 src/plugins/old-stats/stats-plugin.h create mode 100644 src/plugins/pop3-migration/Makefile.am create mode 100644 src/plugins/pop3-migration/Makefile.in create mode 100644 src/plugins/pop3-migration/pop3-migration-plugin.c create mode 100644 src/plugins/pop3-migration/pop3-migration-plugin.h create mode 100644 src/plugins/pop3-migration/test-pop3-migration-plugin.c create mode 100644 src/plugins/push-notification/Makefile.am create mode 100644 src/plugins/push-notification/Makefile.in create mode 100644 src/plugins/push-notification/push-notification-driver-dlog.c create mode 100644 src/plugins/push-notification/push-notification-driver-lua.c create mode 100644 src/plugins/push-notification/push-notification-driver-ox.c create mode 100644 src/plugins/push-notification/push-notification-drivers.c create mode 100644 src/plugins/push-notification/push-notification-drivers.h create mode 100644 src/plugins/push-notification/push-notification-event-flagsclear.c create mode 100644 src/plugins/push-notification/push-notification-event-flagsclear.h create mode 100644 src/plugins/push-notification/push-notification-event-flagsset.c create mode 100644 src/plugins/push-notification/push-notification-event-flagsset.h create mode 100644 src/plugins/push-notification/push-notification-event-mailboxcreate.c create mode 100644 src/plugins/push-notification/push-notification-event-mailboxcreate.h create mode 100644 src/plugins/push-notification/push-notification-event-mailboxdelete.c create mode 100644 src/plugins/push-notification/push-notification-event-mailboxdelete.h create mode 100644 src/plugins/push-notification/push-notification-event-mailboxrename.c create mode 100644 src/plugins/push-notification/push-notification-event-mailboxrename.h create mode 100644 src/plugins/push-notification/push-notification-event-mailboxsubscribe.c create mode 100644 src/plugins/push-notification/push-notification-event-mailboxsubscribe.h create mode 100644 src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c create mode 100644 src/plugins/push-notification/push-notification-event-mailboxunsubscribe.h create mode 100644 src/plugins/push-notification/push-notification-event-message-common.c create mode 100644 src/plugins/push-notification/push-notification-event-message-common.h create mode 100644 src/plugins/push-notification/push-notification-event-messageappend.c create mode 100644 src/plugins/push-notification/push-notification-event-messageappend.h create mode 100644 src/plugins/push-notification/push-notification-event-messageexpunge.c create mode 100644 src/plugins/push-notification/push-notification-event-messageexpunge.h create mode 100644 src/plugins/push-notification/push-notification-event-messagenew.c create mode 100644 src/plugins/push-notification/push-notification-event-messagenew.h create mode 100644 src/plugins/push-notification/push-notification-event-messageread.c create mode 100644 src/plugins/push-notification/push-notification-event-messageread.h create mode 100644 src/plugins/push-notification/push-notification-event-messagetrash.c create mode 100644 src/plugins/push-notification/push-notification-event-messagetrash.h create mode 100644 src/plugins/push-notification/push-notification-events-rfc5423.c create mode 100644 src/plugins/push-notification/push-notification-events-rfc5423.h create mode 100644 src/plugins/push-notification/push-notification-events.c create mode 100644 src/plugins/push-notification/push-notification-events.h create mode 100644 src/plugins/push-notification/push-notification-plugin.c create mode 100644 src/plugins/push-notification/push-notification-plugin.h create mode 100644 src/plugins/push-notification/push-notification-triggers.c create mode 100644 src/plugins/push-notification/push-notification-triggers.h create mode 100644 src/plugins/push-notification/push-notification-txn-mbox.c create mode 100644 src/plugins/push-notification/push-notification-txn-mbox.h create mode 100644 src/plugins/push-notification/push-notification-txn-msg.c create mode 100644 src/plugins/push-notification/push-notification-txn-msg.h create mode 100644 src/plugins/quota-clone/Makefile.am create mode 100644 src/plugins/quota-clone/Makefile.in create mode 100644 src/plugins/quota-clone/quota-clone-plugin.c create mode 100644 src/plugins/quota-clone/quota-clone-plugin.h create mode 100644 src/plugins/quota/Makefile.am create mode 100644 src/plugins/quota/Makefile.in create mode 100644 src/plugins/quota/doveadm-quota.c create mode 100644 src/plugins/quota/quota-count.c create mode 100644 src/plugins/quota/quota-dict.c create mode 100644 src/plugins/quota/quota-dirsize.c create mode 100644 src/plugins/quota/quota-fs.c create mode 100644 src/plugins/quota/quota-fs.h create mode 100644 src/plugins/quota/quota-imapc.c create mode 100644 src/plugins/quota/quota-maildir.c create mode 100644 src/plugins/quota/quota-plugin.c create mode 100644 src/plugins/quota/quota-plugin.h create mode 100644 src/plugins/quota/quota-private.h create mode 100644 src/plugins/quota/quota-status-settings.c create mode 100644 src/plugins/quota/quota-status-settings.h create mode 100644 src/plugins/quota/quota-status.c create mode 100644 src/plugins/quota/quota-storage.c create mode 100644 src/plugins/quota/quota-util.c create mode 100644 src/plugins/quota/quota.c create mode 100644 src/plugins/quota/quota.h create mode 100644 src/plugins/quota/rquota-pragmas.h create mode 100644 src/plugins/quota/rquota.x create mode 100644 src/plugins/quota/test-quota-util.c create mode 100644 src/plugins/replication/Makefile.am create mode 100644 src/plugins/replication/Makefile.in create mode 100644 src/plugins/replication/replication-plugin.c create mode 100644 src/plugins/replication/replication-plugin.h create mode 100644 src/plugins/trash/Makefile.am create mode 100644 src/plugins/trash/Makefile.in create mode 100644 src/plugins/trash/trash-plugin.c create mode 100644 src/plugins/trash/trash-plugin.h create mode 100644 src/plugins/var-expand-crypt/Makefile.am create mode 100644 src/plugins/var-expand-crypt/Makefile.in create mode 100644 src/plugins/var-expand-crypt/test-var-expand-crypt.c create mode 100644 src/plugins/var-expand-crypt/var-expand-crypt-plugin.c create mode 100644 src/plugins/virtual/Makefile.am create mode 100644 src/plugins/virtual/Makefile.in create mode 100644 src/plugins/virtual/virtual-config.c create mode 100644 src/plugins/virtual/virtual-mail.c create mode 100644 src/plugins/virtual/virtual-plugin.c create mode 100644 src/plugins/virtual/virtual-plugin.h create mode 100644 src/plugins/virtual/virtual-save.c create mode 100644 src/plugins/virtual/virtual-search.c create mode 100644 src/plugins/virtual/virtual-storage.c create mode 100644 src/plugins/virtual/virtual-storage.h create mode 100644 src/plugins/virtual/virtual-sync.c create mode 100644 src/plugins/virtual/virtual-transaction.c create mode 100644 src/plugins/virtual/virtual-transaction.h create mode 100644 src/plugins/welcome/Makefile.am create mode 100644 src/plugins/welcome/Makefile.in create mode 100644 src/plugins/welcome/welcome-plugin.c create mode 100644 src/plugins/zlib/Makefile.am create mode 100644 src/plugins/zlib/Makefile.in create mode 100644 src/plugins/zlib/zlib-plugin.c create mode 100644 src/plugins/zlib/zlib-plugin.h create mode 100644 src/pop3-login/Makefile.am create mode 100644 src/pop3-login/Makefile.in create mode 100644 src/pop3-login/client-authenticate.c create mode 100644 src/pop3-login/client-authenticate.h create mode 100644 src/pop3-login/client.c create mode 100644 src/pop3-login/client.h create mode 100644 src/pop3-login/pop3-login-settings.c create mode 100644 src/pop3-login/pop3-login-settings.h create mode 100644 src/pop3-login/pop3-proxy.c create mode 100644 src/pop3-login/pop3-proxy.h create mode 100644 src/pop3/Makefile.am create mode 100644 src/pop3/Makefile.in create mode 100644 src/pop3/main.c create mode 100644 src/pop3/pop3-capability.h create mode 100644 src/pop3/pop3-client.c create mode 100644 src/pop3/pop3-client.h create mode 100644 src/pop3/pop3-commands.c create mode 100644 src/pop3/pop3-commands.h create mode 100644 src/pop3/pop3-common.h create mode 100644 src/pop3/pop3-settings.c create mode 100644 src/pop3/pop3-settings.h create mode 100644 src/replication/Makefile.am create mode 100644 src/replication/Makefile.in create mode 100644 src/replication/aggregator/Makefile.am create mode 100644 src/replication/aggregator/Makefile.in create mode 100644 src/replication/aggregator/aggregator-settings.c create mode 100644 src/replication/aggregator/aggregator-settings.h create mode 100644 src/replication/aggregator/aggregator.c create mode 100644 src/replication/aggregator/notify-connection.c create mode 100644 src/replication/aggregator/notify-connection.h create mode 100644 src/replication/aggregator/replicator-connection.c create mode 100644 src/replication/aggregator/replicator-connection.h create mode 100644 src/replication/replication-common.h create mode 100644 src/replication/replicator/Makefile.am create mode 100644 src/replication/replicator/Makefile.in create mode 100644 src/replication/replicator/doveadm-connection.c create mode 100644 src/replication/replicator/doveadm-connection.h create mode 100644 src/replication/replicator/dsync-client.c create mode 100644 src/replication/replicator/dsync-client.h create mode 100644 src/replication/replicator/notify-connection.c create mode 100644 src/replication/replicator/notify-connection.h create mode 100644 src/replication/replicator/replicator-brain.c create mode 100644 src/replication/replicator/replicator-brain.h create mode 100644 src/replication/replicator/replicator-queue-auth.c create mode 100644 src/replication/replicator/replicator-queue.c create mode 100644 src/replication/replicator/replicator-queue.h create mode 100644 src/replication/replicator/replicator-settings.c create mode 100644 src/replication/replicator/replicator-settings.h create mode 100644 src/replication/replicator/replicator.c create mode 100644 src/replication/replicator/test-replicator-queue.c create mode 100644 src/stats/Makefile.am create mode 100644 src/stats/Makefile.in create mode 100644 src/stats/client-http.c create mode 100644 src/stats/client-http.h create mode 100644 src/stats/client-reader.c create mode 100644 src/stats/client-reader.h create mode 100644 src/stats/client-writer.c create mode 100644 src/stats/client-writer.h create mode 100644 src/stats/event-exporter-fmt-json.c create mode 100644 src/stats/event-exporter-fmt-none.c create mode 100644 src/stats/event-exporter-fmt-tab-text.c create mode 100644 src/stats/event-exporter-fmt.c create mode 100644 src/stats/event-exporter-transport-drop.c create mode 100644 src/stats/event-exporter-transport-http-post.c create mode 100644 src/stats/event-exporter-transport-log.c create mode 100644 src/stats/event-exporter.h create mode 100644 src/stats/main.c create mode 100644 src/stats/stats-common.h create mode 100644 src/stats/stats-event-category.c create mode 100644 src/stats/stats-event-category.h create mode 100644 src/stats/stats-metrics.c create mode 100644 src/stats/stats-metrics.h create mode 100644 src/stats/stats-service-openmetrics.c create mode 100644 src/stats/stats-service-private.h create mode 100644 src/stats/stats-service.c create mode 100644 src/stats/stats-service.h create mode 100644 src/stats/stats-settings.c create mode 100644 src/stats/stats-settings.h create mode 100644 src/stats/test-client-reader.c create mode 100644 src/stats/test-client-writer.c create mode 100644 src/stats/test-stats-common.c create mode 100644 src/stats/test-stats-common.h create mode 100644 src/stats/test-stats-metrics.c create mode 100644 src/submission-login/Makefile.am create mode 100644 src/submission-login/Makefile.in create mode 100644 src/submission-login/client-authenticate.c create mode 100644 src/submission-login/client-authenticate.h create mode 100644 src/submission-login/client.c create mode 100644 src/submission-login/client.h create mode 100644 src/submission-login/submission-login-settings.c create mode 100644 src/submission-login/submission-login-settings.h create mode 100644 src/submission-login/submission-proxy.c create mode 100644 src/submission-login/submission-proxy.h create mode 100644 src/submission/Makefile.am create mode 100644 src/submission/Makefile.in create mode 100644 src/submission/main.c create mode 100644 src/submission/submission-backend-relay.c create mode 100644 src/submission/submission-backend-relay.h create mode 100644 src/submission/submission-backend.c create mode 100644 src/submission/submission-backend.h create mode 100644 src/submission/submission-client.c create mode 100644 src/submission/submission-client.h create mode 100644 src/submission/submission-commands.c create mode 100644 src/submission/submission-commands.h create mode 100644 src/submission/submission-common.h create mode 100644 src/submission/submission-recipient.c create mode 100644 src/submission/submission-recipient.h create mode 100644 src/submission/submission-settings.c create mode 100644 src/submission/submission-settings.h create mode 100644 src/util/Makefile.am create mode 100644 src/util/Makefile.in create mode 100755 src/util/dovecot-sysreport create mode 100644 src/util/gdbhelper.c create mode 100644 src/util/health-check-settings.c create mode 100755 src/util/health-check.sh create mode 100644 src/util/maildirlock.c create mode 100644 src/util/rawlog.c create mode 100644 src/util/script-login.c create mode 100644 src/util/script.c create mode 100644 src/util/tcpwrap-settings.c create mode 100644 src/util/tcpwrap.c create mode 100644 src/util/test-fs.c create mode 100644 stamp.h.in create mode 100644 update-version.sh create mode 100755 ylwrap diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..26fa1cd --- /dev/null +++ b/AUTHORS @@ -0,0 +1,24 @@ +Timo Sirainen + +Solar Designer (src/lib/md5.c, src/auth/passdb-pam.c) + +Andrey Panin (src/auth/mech-apop.c, src/auth/mech-login.c, + src/lib-ntlm/*, src/auth/mech-ntlm.c, src/auth/mech-rpa.c) + +Joshua Goodall (src/auth/mech-cram-md5.c, + src/doveadm/doveadm-pw.c) + +Jakob Hirsch (src/lib-sql/driver-sqlite.c) + +Jelmer Vernooij (src/auth/mech-gssapi.c) + +Vaclav Haisman (src/lib/ioloop-kqueue.c, + src/lib/ioloop-notify-kqueue.c) + +Portions Copyright (c) 2008 Apple Inc. All rights reserved. + +Blowfish code by Solar Designer + +SMTP fuzzer code by Catena cyber + +Grepping 'Patch by' from ChangeLog shows up more people. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..11291fc --- /dev/null +++ b/COPYING @@ -0,0 +1,76 @@ +See AUTHORS file for list of copyright holders. + +Everything in src/lib/, src/auth/, and src/lib-sql/ is under MIT license +(see COPYING.MIT) unless otherwise mentioned at the beginning of the file. + +Everything else is LGPLv2.1 (see COPYING.LGPL) unless otherwise mentioned +at the beginning of the file. + +Current exceptions are: + +src/lib/md5.c : Public Domain + +src/lib/sha1.c and sha2.c: + + Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. + Copyright (C) 2005, 2007 Olivier Gay + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +src/lib/UnicodeData.txt: + + Copyright (C) 1991-2007 Unicode, Inc. All rights reserved. Distributed + under the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of the Unicode data files and any associated documentation (the "Data + Files") or Unicode software and any associated documentation (the + "Software") to deal in the Data Files or Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, and/or sell copies of the Data Files or Software, and + to permit persons to whom the Data Files or Software are furnished to do + so, provided that (a) the above copyright notice(s) and this permission + notice appear with all copies of the Data Files or Software, (b) both the + above copyright notice(s) and this permission notice appear in associated + documentation, and (c) there is clear notice in each modified Data File or + in the Software as well as in the documentation associated with the Data + File(s) or Software that the data or software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR + CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THE DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in these Data Files or Software without prior written + authorization of the copyright holder. diff --git a/COPYING.LGPL b/COPYING.LGPL new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/COPYING.LGPL @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/COPYING.MIT b/COPYING.MIT new file mode 100644 index 0000000..0997c5d --- /dev/null +++ b/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..b768bab --- /dev/null +++ b/ChangeLog @@ -0,0 +1,186332 @@ +2024-08-09 12:24:39 +0300 Aki Tuomi (d492236fa0) + + configure: Update version + + +M configure.ac + +2024-08-08 15:13:19 +0300 Aki Tuomi (9a69ceda23) + + NEWS: Add news for 2.3.21.1 + + +M NEWS + +2024-04-24 10:45:46 +0000 Marco Bettini (ce88c33abc) + + lib-mail: message-parser - Limit headers total count to 50MB by default + + (including top headers and all mime-sections headers) + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c +M src/lib-mail/message-parser.h +M src/lib-mail/test-message-parser.c + +2024-04-12 15:06:43 +0000 Marco Bettini (f020e139c5) + + lib-mail: message-header-parser - Limit header block to 10MB by default + + +M src/lib-mail/message-header-parser.c +M src/lib-mail/message-header-parser.h +M src/lib-mail/test-message-header-parser.c + +2024-02-09 00:57:12 +0200 Timo Sirainen (1481c04f02) + + lib-mail, lib-imap: Optimize parsing large number of address headers + + Every header was appended to a linked list by walking through the whole + list, causing excessive CPU usage when the list became large enough. Fixed + by changing struct message_part_envelope to use struct message_address_list, + which stores also linked list tail pointers. This allows quickly appending + to the end of the linked list. + +M src/lib-imap/imap-envelope.c +M src/lib-mail/message-part-data.c +M src/lib-mail/message-part-data.h +M src/lib-storage/index/index-search-mime.c + +2024-01-30 22:17:38 +0200 Timo Sirainen (da61d20311) + + lib-mail: Add message_address_parse_full() and struct message_address_list + + +M src/lib-mail/message-address.c +M src/lib-mail/message-address.h +M src/lib-mail/test-message-address.c + +2024-02-04 00:26:57 +0200 Timo Sirainen (a1c9b04094) + + lib-mail: Change message_address to be doubly linked list + + +M src/lib-imap/imap-envelope.c +M src/lib-mail/message-address.c +M src/lib-mail/message-address.h +M src/lib-mail/test-message-address.c + +2024-01-30 22:42:50 +0200 Timo Sirainen (0bae091859) + + lib-mail: test-imap-envelope - Use test_assert_idx() where possible + + +M src/lib-imap/test-imap-envelope.c + +2024-02-09 00:33:00 +0200 Timo Sirainen (cee08202c7) + + lib: Add DLLIST2_JOIN() + + +M src/lib/llist.h +M src/lib/test-llist.c + +2024-02-09 00:32:39 +0200 Timo Sirainen (8e4c42dbb3) + + lib: test-llist - Fix dllist2 test name + + +M src/lib/test-llist.c + +2024-03-26 14:13:42 +0200 Aki Tuomi (57ee018642) + + auth: mech-oauth2 - Use the iterated passdb in oauth2_find_oidc_url() + + Fixes a crash when oauth2 passdb is not first. Broken in + 59647f483c49c9e54c43cade168bf10f44a49292 + +M src/auth/mech-oauth2.c + +2024-03-13 13:08:18 +0200 Timo Sirainen (b6f4074961) + + login-common: Add client_vfuncs.iostream_change_pre/post() + + +M src/login-common/client-common.c +M src/login-common/client-common.h + +2023-10-06 15:59:32 +0300 Timo Sirainen (955bff2155) + + lib: Fix sha2 functions to not produce wrong results with >500MB input + + +M src/lib/sha2.c +M src/lib/sha2.h +M src/lib/test-hash-method.c + +2023-10-03 13:11:49 +0000 Marco Bettini (ac2bc5da92) + + oauth: Accept multiple entries in aud field + + +M src/auth/db-oauth2.c +M src/lib-oauth2/oauth2-jwt.c + +2023-08-28 15:27:09 +0000 Marco Bettini (47349e2482) + + mail-crypt: mail_crypt_mailbox_allocated() - Force cross-user copies to + (de,re)encrypt the contents + + +M src/plugins/mail-crypt/mail-crypt-plugin.c + +2023-09-06 15:04:49 +0300 Aki Tuomi (aaaa810590) + + NEWS: Update NEWS with changes + + +M NEWS + +2023-09-06 08:34:51 +0300 Aki Tuomi (bafdc83211) + + lib-sql: driver-mysql - Use API state to check if there is connection + + db->mysql cannot be NULL. + + Broken in 542877c08eb8130733567e5b718933bc3cdc8426 + +M src/lib-sql/driver-mysql.c + +2023-09-05 13:39:40 +0300 Aki Tuomi (21927de9f4) + + dsync: Destroy name128_remotesep_hash in dsync_mailbox_tree_deinit() + + Forgotten in 678d0463849ba777106eb7875f27db07a5d8e3df + +M src/doveadm/dsync/dsync-mailbox-tree.c + +2023-09-02 17:50:55 +1000 Ted Phelps (6901e5fc1c) + + dsync: Fix an infinite loop + + Be sure to update 'name' when traversing the components of a path in + convert_name_to_remote_sep. Otherwise we end up allocating a lot of memory + and failing. + +M src/doveadm/dsync/dsync-mailbox-tree.c + +2023-08-30 13:19:47 +0300 Aki Tuomi (542877c08e) + + lib-sql: driver-mysql - Initialize MYSQL struct once + + Calling initialize more than once will leak memory. + +M src/lib-sql/driver-mysql.c + +2023-08-30 13:21:12 +0300 Aki Tuomi (939e47c94e) + + lib-sql: driver-mysql - Use driver_mysql_disconnect() in deinit + + This ensures we call mysql_close() only in one place. + +M src/lib-sql/driver-mysql.c + +2023-08-29 15:04:04 +0300 Aki Tuomi (f55acdc81c) + + lib-sql: driver-mysql - Use container_of instead of blind cast + + +M src/lib-sql/driver-mysql.c + +2023-07-17 10:36:32 +0300 Aki Tuomi (34f597596e) + + lib-sql: Disconnect SQL connection on error + + +M src/lib-sql/driver-mysql.c + +2023-06-22 10:48:13 +0300 Timo Sirainen (648b5a3a6e) + + mdbox: Fix crash still if fdatasync_path() fails + + Broken still in a8424a71d70e2f5c54d9e2aab8338cf9547b15b4 + +M src/lib-storage/index/dbox-multi/mdbox-save.c + +2023-08-30 15:46:20 +0300 Aki Tuomi (02bf7bd126) + + configure: Update version + + +M configure.ac + +2023-08-30 15:45:45 +0300 Aki Tuomi (c658ae5288) + + NEWS: Add news for 2.3.21 + + +M NEWS + +2023-06-15 13:32:11 +0200 Karl Fleischmann (daff6f22c1) + + stats: Allow empty event exporters when registering metrics + + +M src/stats/stats-metrics.c + +2023-08-29 10:13:34 +0000 Marco Bettini (c7a8868882) + + fts: doveadm - Add missing pool initialization in cmd_search_box() + + Broken by: 467a664b5fce33f3d47a3e1171ecacb508968d1a + +M src/plugins/fts/doveadm-fts.c + +2023-08-24 12:26:44 +0300 Aki Tuomi (526b66635d) + + auth: db-oauth2 - Set default value for active_attribute and active_value to + empty string + + Otherwise it will always require this attribute to be present when not + configured. + +M src/auth/db-oauth2.c + +2023-08-24 22:16:36 +0300 Aki Tuomi (476e03f65b) + + login-common: If authentication is aborted, clear out final response. + + +M src/login-common/sasl-server.c + +2023-06-01 10:47:50 +0000 Marco Bettini (bfb698553f) + + auth: db-oauth2 - Handle the case for check on attribute presence only + + +M src/auth/db-oauth2.c + +2023-06-01 08:37:56 +0000 Marco Bettini (b6e310356f) + + auth: db_oauth2_user_is_enabled() - Flatten the code + + +M src/auth/db-oauth2.c + +2022-05-17 15:19:49 -0400 Steve Mokris (7969d5be1d) + + auth: db-oauth2 - Fail login if active_attribute is missing + + If active_attribute is required by config, we should fail to login when it's + missing. + +M src/auth/db-oauth2.c + +2023-05-12 11:48:25 +0300 Aki Tuomi (f3e85d8f51) + + lib-oauth2: Do not send empty client_id or client_secret + + +M src/lib-oauth2/oauth2-request.c + +2023-05-12 11:47:41 +0300 Aki Tuomi (9ad55e6c04) + + lib-oauth2: Do not send client_id and client_secret as parameters in POST + queries + + They need to be configured in the URL as Basic auth instead. + +M src/lib-oauth2/oauth2-request.c + +2023-05-12 08:59:50 +0300 Aki Tuomi (e449757553) + + lib-oauth2: Do not send client_id & client_secret as POST parameters when + doing introspection + + +M src/lib-oauth2/oauth2-request.c + +2023-05-08 08:38:20 +0300 Aki Tuomi (8623cb0319) + + lib-oauth2: Validate scope when configured + + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2023-05-08 08:23:39 +0300 Aki Tuomi (9c7f5a74a7) + + lib-oauth2: Remove typ check + + It is not really useful. And mostly just keeps breaking when people invent + new kty values. + +M src/lib-oauth2/oauth2-jwt.c + +2023-05-08 08:21:43 +0300 Aki Tuomi (63e0c9ede4) + + lib-oauth2: Ensure aud field has client_id when set. + + OpenID Connect 1.0 specification says that "aud" field must contain OAuth + 2.0 client_id of the Relying Party as an audience value. + +M src/lib-oauth2/oauth2-jwt.c + +2023-05-15 13:49:58 +0300 Aki Tuomi (18576fde01) + + auth: mech-oauth2 - Always fail with protocol specific error + + +M src/auth/mech-oauth2.c + +2023-05-15 11:51:19 +0300 Aki Tuomi (59647f483c) + + auth: mech-oauth2 - Look for openid configuration URL if missing + + +M src/auth/mech-oauth2.c +M src/auth/passdb-oauth2.c +M src/auth/passdb.h + +2023-05-04 15:44:15 +0300 Aki Tuomi (3db58fd809) + + lib-oauth2: Return failure instead of crash with invalid or missing token + + +M src/lib-oauth2/oauth2-request.c + +2022-12-14 10:10:12 +0200 Aki Tuomi (d6ff43f766) + + auth: db-oauth2 - Add accessor for OpenID configuration URL + + +M src/auth/db-oauth2.c +M src/auth/db-oauth2.h + +2023-06-02 14:20:08 +0300 Aki Tuomi (77e2d55092) + + auth: db-oauth2 - Store request username + + +M src/auth/db-oauth2.c + +2023-05-15 12:41:39 +0300 Aki Tuomi (3a69b83a35) + + auth: Add auth_request_fail_with_reply() + + +M src/auth/auth-request.c +M src/auth/auth-request.h + +2023-05-15 13:49:41 +0300 Aki Tuomi (d8fdd193f0) + + auth: Pass along final response with failure + + +M src/auth/auth-request-handler.c + +2023-05-15 12:28:53 +0300 Aki Tuomi (78b8d7c861) + + lib-auth: Move auth_client_request_continue() lower + + Simplifies next commit + +M src/lib-auth/auth-client-request.c + +2023-05-15 14:27:55 +0300 Aki Tuomi (7e5c9ad6da) + + login-common: Serve final response for client on failure + + +M src/login-common/client-common-auth.c +M src/login-common/client-common.c +M src/login-common/client-common.h +M src/login-common/sasl-server.c +M src/login-common/sasl-server.h + +2023-05-15 13:49:51 +0300 Aki Tuomi (dbb801a8f0) + + login-common: Ignore resp when present + + +M src/login-common/client-common-auth.c + +2023-05-03 14:35:54 +0300 sergey.kitov (5061e0c48a) + + acl: Fix wrong \HasChildren flags for parent mailboxes containing '*' and + '%' + + '*' in mailbox name is replaced with '%' while child mailboxes still have + '*' in their path, this results in wrong \HasNoChildren flag. + +M src/plugins/acl/acl-mailbox-list.c + +2023-05-03 14:35:18 +0300 sergey.kitov (f2e50d5676) + + lib-storage: Whitespace cleanup. + + +M src/lib-storage/list/mailbox-list-iter.c + +2023-05-09 07:22:15 +0000 Marco Bettini (50af4232c1) + + lib-storage: Add mail_get_message_id_no_validation() + + +M src/lib-storage/mail-storage.h +M src/lib-storage/mail.c + +2023-05-16 09:40:55 +0000 Marco Bettini (06aecd2b95) + + lib-dict: redis_reply_callback() - Don't crash if there is no callback + + +M src/lib-dict/dict-redis.c + +2023-04-18 00:08:40 +0300 Timo Sirainen (175043954c) + + lib-index: Delete dovecot.index.cache during purging if it becomes too large + + This only happens if the file was already too large before the purging + happens. This mainly fixes assert-crashes caused by old huge >1GB cache + files. + + Fixes: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): + assertion failed: (offset < 0x40000000) + +M src/lib-index/mail-cache-purge.c + +2022-05-17 12:31:40 +0200 Timo Sirainen (9f903ee879) + + lib-master: Use ssl_require_crl setting only for server-side SSL settings + + We don't currently properly support checking CRLs when acting as SSL client. + The CRL would have to be stored as part of the CAs, which isn't commonly + done. This bug has been in the code ever since it was added in + 30c5c1fc3608ae575f11960281d3e338b6bf7bc8, but it became more noticeable with + recent changes that started using lib-master for getting all SSL client + settings, e.g. 1e5324b5805bf7299cd8196f7b659fe935f027bd + +M src/lib-master/master-service-ssl-settings.c + +2023-04-06 09:04:35 +0200 Karl Fleischmann (08528c38e1) + + stats: stats_metrics_add_dynamic() - Validate event exporter + + +M src/stats/stats-metrics.c + +2023-03-23 15:37:28 +0000 Marco Bettini (b3981ea5c6) + + lib-master: stats_client_deinit() - Ensure conn.output is flushed before + returning + + This prevents losing exported events still waiting in buffers while the + process exits. + +M src/lib-master/stats-client.c + +2023-03-27 08:19:38 +0000 Marco Bettini (e52db68ff4) + + lib-master: stats_event_callback() - Skip if conn.output is already closed + + This also prevents further errors from happening on the closed stream. + +M src/lib-master/stats-client.c + +2023-03-24 14:04:00 +0000 Marco Bettini (9c3e210f1e) + + lib-master: stats_client_send_event() - Also flush conn.output and check for + errors + + +M src/lib-master/stats-client.c + +2023-03-23 15:35:49 +0000 Marco Bettini (6231b7af67) + + lib-master: stats_event_write() - Don't accumulate more than IO_BLOCK_SIZE + bytes in str buffer + + +M src/lib-master/stats-client.c + +2023-02-24 14:06:14 +0200 Timo Sirainen (d6c67f24c4) + + lib: event-filter-parser.y - Add workaround for nerrs being unused warning + + Fixes with clang-17: warning: variable 'event_filter_parser_nerrs' set but + not used + +M src/lib/event-filter-parser.y + +2023-02-24 14:02:01 +0200 Timo Sirainen (6c22f4dc1f) + + global: Remove dead code + + +M src/lib-dict/test-dict-client.c +M src/lib-master/test-event-stats.c +M src/lib/test-mempool-allocfree.c + +2021-12-31 11:29:02 +0200 Timo Sirainen (7c73ba5364) + + lib-dict: test-dict-client - Handle shutdown cleanly with ctrl-c + + +M src/lib-dict/test-dict-client.c + +2022-07-07 13:58:02 +0300 Aki Tuomi (4c06fee481) + + login-common: Handle missing ssl_iostream in get_var_expand_table() + + It can be missing during connection disconnection when connection is lost + uncleanly. + +M src/login-common/client-common.c + +2023-04-04 11:51:22 +0300 Timo Sirainen (b0fd628d56) + + notify-status: Fix crash if user initialization fails + + The deinit code crashed if mail_namespaces_created hook hadn't been called + before user was deinitialized. + +M src/plugins/notify-status/notify-status-plugin.c + +2023-06-29 13:40:24 +0300 Aki Tuomi (2340275fad) + + lib-sql: pgsql - Use orig_ioloop instead of local variable + + orig_ioloop is used later, leaving it NULL here causes problems when timeout + is added by sqlpool. + + Broken in 8981a973987c237552e46b68075b64caa8c1f5bb + +M src/lib-sql/driver-pgsql.c + +2023-06-26 10:43:00 +0000 Marco Bettini (4c3ae0468e) + + dbox: Fix for dangling pointer being passed to cleanup_interval() + + Broken in 88eee28fd86d619b26ce6aebadca5b18e748dc6f + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/dbox-common/dbox-storage.h +M src/lib-storage/index/dbox-multi/mdbox-map.c + +2023-06-20 18:58:13 +0300 Timo Sirainen (7268e169ec) + + mdbox: Optimize mail_temp_scan_interval storage/ scanning + + Use the generic dbox scanning code, which avoids stat()ing the directory by + keeping the timestamp in index header. Also do the scanning while at session + deinit instead of startup, so the latency isn't visible to clients. + +M src/lib-storage/index/dbox-multi/mdbox-map.c + +2023-06-20 18:58:00 +0300 Timo Sirainen (37ddfe8efb) + + lib-storage: Split off index_mailbox_view_update_last_temp_file_scan() + + +M src/lib-storage/index/index-storage.c +M src/lib-storage/index/index-storage.h + +2023-06-20 22:28:35 +0300 Timo Sirainen (6b4a3f8e7b) + + dbox: mail_temp_scan_interval - Fix deleted temp file prefix + + dbox files are always created with DBOX_TEMP_FILE_PREFIX, not the mailbox + list-specific prefix. This was a problem only if dbox was used with + LAYOUT=Maildir++, which nobody was likely to do. Other layouts had identical + temp file prefixes to DBOX_TEMP_FILE_PREFIX. + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-06-20 18:54:49 +0300 Timo Sirainen (41ddf30762) + + dbox: Split off dbox_mailbox_list_cleanup() + + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/dbox-common/dbox-storage.h + +2023-06-20 18:44:52 +0300 Timo Sirainen (58028ecbcf) + + mdbox: Don't do temp file scanning for mailbox directories + + The intention was to delete any temporary mail files that have been left + behind by crashed processes, but mail files are written to storage/ + directory. + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/dbox-common/dbox-storage.h +M src/lib-storage/index/dbox-single/sdbox-storage.c + +2023-06-20 18:24:34 +0300 Timo Sirainen (a8424a71d7) + + mdbox: Fix fdatasync() path when saving mails + + It was supposed to be called on the parent directory of where mails were + written, i.e. storage/ directory. The previous code was instead calling it + on the mailbox-specific directory (similarly to sdbox) where nothing was + written. + +M src/lib-storage/index/dbox-multi/mdbox-save.c + +2023-06-20 18:21:38 +0300 Timo Sirainen (c6935e5ef2) + + mdbox: Fix crash if fdatasync_path() fails + + There is no dest_mail anymore at this stage of transaction. + +M src/lib-storage/index/dbox-multi/mdbox-save.c + +2023-04-12 12:06:52 +0300 sergey.kitov (7bb46f7e89) + + lib-storage: Rollback save transaction when transaction commit fails. + + +M src/lib-storage/index/index-transaction.c + +2023-02-05 20:51:12 +0200 Timo Sirainen (ac81ce75a6) + + sdbox: Fix panic due to leaked mail_index_view if sync fails + + Fixes: Panic: Leaked view for index .../dbox-Mails/dovecot.index: Opened in + mail-index-sync.c:445 + +M src/lib-storage/index/dbox-single/sdbox-sync.c + +2023-02-05 20:50:06 +0200 Timo Sirainen (aae93d3ea7) + + lib-index: Don't update log_file_tail_offset on sync if reading + dovecot.index.log failed + + This is more of a theoretical issue, since dovecot.index.log read failure is + very unlikely. + +M src/lib-index/mail-index-sync-update.c + +2023-02-05 20:47:08 +0200 Timo Sirainen (830a7db7c0) + + lib-index: Don't update max_tail_offset if write to dovecot.index.log fails + + The max_tail_offset didn't actually increase in that situation. This fixes + wrongly updating mail_index_header.log_file_tail_offset after write to + dovecot.index.log failed (due to out of disk space), which in turn can cause + some unexpected errors. + +M src/lib-index/mail-transaction-log-append.c + +2023-02-05 20:46:34 +0200 Timo Sirainen (08740f7902) + + lib-index: Fix event leak if purging dovecot.index.cache fails + + +M src/lib-index/mail-cache-purge.c + +2022-11-02 15:56:54 +0200 Aki Tuomi (6d5eb29761) + + lib-oauth2: jwt - Allow missing 'typ' field + + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-05-28 15:05:08 +0300 Aki Tuomi (9f528295d1) + + lib-oauth2: test-oauth2-jwt - Ensure we ignore 'none' algorithm + + +M src/lib-oauth2/test-oauth2-jwt.c + +2023-04-14 11:35:30 +0300 Timo Sirainen (3ea25161a3) + + lib-login: Don't update process title if verbose_proctitle=no + + Broken by 4fcd7f497577af361fc3313fbc07a61c14e17715 + +M src/lib-master/master-login.c + +2023-03-24 03:26:33 +0200 Timo Sirainen (1e8d0face3) + + global: Enable login_server_settings.update_proctitle + + +M src/imap-urlauth/imap-urlauth.c +M src/imap/main.c +M src/pop3/main.c +M src/submission/main.c + +2023-03-24 03:26:11 +0200 Timo Sirainen (2a9b8c4e3a) + + lib-login: Add login_server_settings.update_proctitle + + Update the current login state in process title when enabled. + +M src/lib-master/master-login.c +M src/lib-master/master-login.h + +2023-03-24 04:02:28 +0200 Timo Sirainen (5266019fbb) + + lib-login: Keep connection in server's linked list until it's fully freed + + Otherwise the connection isn't accessible from any global variables. + +M src/lib-master/master-login.c + +2023-03-24 02:29:39 +0200 Timo Sirainen (af6edaef3f) + + imap: Update process title while unhibernating + + Previously the process title stayed as [idling] even though the process was + busy waiting on the imap-hibernate process to finish sending the + unhibernation request. + +M src/imap/imap-master-client.c +M src/imap/imap-master-client.h +M src/imap/main.c + +2023-03-24 02:00:37 +0200 Timo Sirainen (ed42bc9c0f) + + lib-master: Set process title to [initializing] until + master_service_init_finish() + + +M src/lib-master/master-service.c + +2023-03-24 02:02:58 +0200 Timo Sirainen (d591711cdb) + + lib: Add process_title_get_counter() + + +M src/lib/process-title.c +M src/lib/process-title.h + +2023-03-24 01:53:43 +0200 Timo Sirainen (c7cf91d863) + + master: Set VERBOSE_PROCTITLE environment to child processes + + This is needed for updating process title during initialization before + settings are read. + +M src/lib-master/master-interface.h +M src/master/service-process.c + +2023-03-24 01:15:21 +0200 Timo Sirainen (f89dec342d) + + imap: Disconnect imap-master client if it's not sending anything for 25 + seconds + + +M src/imap/imap-master-client.c + +2023-03-24 01:45:34 +0200 Timo Sirainen (61e4e19d06) + + imap: Improve disconnection log message if it happens immediately after + unhibernation + + The "No commands sent after unhibernation" can mean that imap-hibernate + process saw a timeout while unhibernating and shutdown the connection. Or it + can also mean just that the client itself disconnected. + +M src/imap/imap-client.c + +2023-03-24 01:41:37 +0200 Timo Sirainen (8eb93d1c41) + + imap-hibernate: If unhibernation fails, make sure imap process won't finish + it later on + + Especially if unhibernation fails due to a connection timeout to imap + process due to high load, it's possible that the imap process will + eventually finish the unhibernation and continue with the client. This is + rather confusing, since imap-hibernate process already logged that the + client got disconnected. + +M src/imap-hibernate/imap-client.c + +2022-01-13 16:54:18 +0200 Timo Sirainen (e4d6c8055e) + + imap: Add client.unhibernated boolean + + +M src/imap/imap-client.c +M src/imap/imap-client.h +M src/imap/imap-common.h +M src/imap/imap-master-client.c +M src/imap/main.c +M src/imap/test-imap-client-hibernate.c + +2023-05-05 15:20:34 +0000 Marco Bettini (80ddfb7b30) + + auth: mech_gssapi_unwrap() - Release gss_release_buffe(outbuf) before + returning + + +M src/auth/mech-gssapi.c + +2023-03-23 22:23:39 +0200 Timo Sirainen (7566d8783f) + + master: Fix service { idle_kill } to work better on busy servers + + The previous behavior was to kill a process once it had idled for idle_kill + seconds. However, on a busy server the new connections are picked up + somewhat randomly by all the idling processes, so there's never any single + process idling for a long time. This effectively prevents the idle_kill from + killing any processes, even if there are unnecessarily many of them. + + The new behavior here tracks the lowest number of idling processes during + idle_kill time interval. Then it kills that many processes. If the load + stays the same, this should shrink the number of processes to the number + that is needed to handle the load, but no more. + +M src/master/service-monitor.c +M src/master/service-process.c +M src/master/service.h + +2023-03-23 16:07:26 +0200 Timo Sirainen (d0e74ddac0) + + master: Replace per-process idle_kill timeout with per-service + + This is much more efficient, since it doesn't have to keep updating the + timeout constantly for busy processes. + + This change still preserves the original way the idle_kill setting behaves. + +M src/master/service-monitor.c +M src/master/service-process.c +M src/master/service-process.h +M src/master/service.h + +2023-03-23 16:37:08 +0200 Timo Sirainen (008622eb2c) + + master: Add asserts to make sure counters don't wrap + + +M src/master/service-process.c + +2023-03-23 16:36:10 +0200 Timo Sirainen (6cfee1e183) + + master: Add service.process_idling to count number of idling processes + + +M src/master/service-monitor.c +M src/master/service-process.c +M src/master/service.h + +2023-03-23 15:09:43 +0200 Timo Sirainen (a4e9e0c9b3) + + master: Split processes list to busy and idling processes + + Keep the idling processes sorted by idle_start time. This will be needed by + the next commit. + +M src/master/main.c +M src/master/master-client.c +M src/master/service-monitor.c +M src/master/service-process.c +M src/master/service-process.h +M src/master/service.c +M src/master/service.h + +2023-02-28 12:05:44 +0000 Marco Bettini (3b67507e97) + + dbox: dbox_cleanup_temp_files() - Fuzz scan interval adding 0..+30% based on + username hash + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-02-28 11:45:43 +0000 Marco Bettini (c3756423f0) + + dbox: dbox_cleanup_temp_files() - Reformat code + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-02-28 11:44:48 +0000 Marco Bettini (5fcf0da179) + + dbox: dbox_cleanup_temp_files() - Remove unnecessary else/else if after + returns + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-02-28 11:30:22 +0000 Marco Bettini (e91d8309f5) + + dbox: dbox_mailbox_open() - Drop unused ctime + + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/dbox-common/dbox-storage.h +M src/lib-storage/index/dbox-multi/mdbox-storage.c +M src/lib-storage/index/dbox-single/sdbox-storage.c + +2023-02-28 11:21:10 +0000 Marco Bettini (4bf0ee1814) + + dbox: dbox_mailbox_open() - Move dbox_cleanup_temp_files() to + dbox_mailbox_close() + + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/dbox-common/dbox-storage.h +M src/lib-storage/index/dbox-multi/mdbox-storage.c +M src/lib-storage/index/dbox-single/sdbox-storage.c + +2023-02-28 10:15:50 +0000 Marco Bettini (f18b8e9f46) + + dbox: dbox_mailbox_open() - Infer last_temp_file_scan from dir's atime if 0 + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-02-28 10:14:26 +0000 Marco Bettini (4ddb4f7656) + + dbox: dbox_mailbox_create() - Update last_temp_file_scan + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-03-03 16:15:17 +0000 Marco Bettini (119d496acd) + + lib-storage: dbox_cleanup_temp_files() - Fix inverted check for ENOENT + + +M src/lib-storage/index/dbox-common/dbox-storage.c + +2023-03-24 08:53:27 +0200 Aki Tuomi (eab9fd0154) + + stats: openmetrics - Set field always when used + + Satisfied static analysers. + + Broken in ba19a18d54cb7cf7de93d6a235862a408cfe5828 + +M src/stats/stats-service-openmetrics.c + +2023-01-26 08:15:29 +0200 Aki Tuomi (8aef0ce5ea) + + stats: openmetrics - Create metrics for all specified fields + + +M src/stats/stats-service-openmetrics.c + +2023-04-04 00:43:55 +0300 Timo Sirainen (4c74cf89f6) + + dsync: Fix handling mailboxes with % character when BROKENCHAR isn't + explicitly set in config + + When vname_escape_char (= BROKENCHAR) isn't explicitly set in configuration, + '%' character (or if it was hierarchy separator, '~') was used as the + default internal escape character. However, this was used inconsistently + between local and remote mailbox trees. The remote tree stored the mailbox + names unescaped, while the local mailbox names were escaped. This + inconsistency caused dsync to do unnecessary mailbox renames, which might + have ended up failing. + + This especially fixes dsync failures when mailbox name ended with the '%' + character. + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c +M src/doveadm/dsync/dsync-mailbox-tree-fill.c +M src/doveadm/dsync/dsync-mailbox-tree.h + +2023-04-04 00:43:04 +0300 Timo Sirainen (e69f52d697) + + dsync: Refactor dsync_brain_mailbox_to_parts() into + dsync_mailbox_name_to_parts() + + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c +M src/doveadm/dsync/dsync-mailbox-tree.c +M src/doveadm/dsync/dsync-mailbox-tree.h + +2023-03-20 14:00:48 +0000 Marco Bettini (37f46933cf) + + virtual: virtual_backend_box_lookup() - Enforce callers to check if the call + succeeded + + +M src/plugins/virtual/virtual-mail.c +M src/plugins/virtual/virtual-storage.c +M src/plugins/virtual/virtual-storage.h +M src/plugins/virtual/virtual-sync.c + +2023-03-24 13:50:29 +0000 Marco Bettini (f861c0be75) + + virtual: virtual_sync_apply_existing_expunges() - Don't crash if the backend + mailbox has been removed + + +M src/plugins/virtual/virtual-sync.c + +2023-01-02 10:23:43 +0200 Timo Sirainen (c29eccb64e) + + lib-index: Fix assert-crash when header's log_file_seq/offset shrinks + + mail_index_sync_set_log_view() is also missing this check, but it doesn't + seem to actually happen. It's likely handled by mail_index_map() already. + + Fixes: Panic: file mail-transaction-log-view.c: line 165 + (mail_transaction_log_view_set): assertion failed: (min_file_seq <= + max_file_seq) + +M src/lib-index/mail-index-sync.c + +2022-03-21 12:22:38 +0100 Stephan Bosch (d3aa3d876a) + + lib-http: http-server-connection - Fix segfault occurring when output is + resumed on closed connection. + + +M src/lib-http/http-server-connection.c + +2023-03-07 15:53:06 +0200 Timo Sirainen (7b60aa05af) + + man: Add doveadm fts check fast/full + + +M doc/man/doveadm-fts.1.in + +2023-02-09 17:04:22 +0200 Timo Sirainen (5b6f678009) + + lib-imap-client: Fix/clarify selection state handling + + The old code assumed that selected_box would be non-NULL while a new mailbox + is being selected. That's not true though, the imapc-storage code closes the + old mailbox before selecting the next one. So the QRESYNC-specific code for + tracking selected-state was never being used. Fixed this, and clarified in + general how the selected-state is supposed to work. + +M src/lib-imap-client/imapc-client.c +M src/lib-imap-client/imapc-connection.c +M src/lib-imap-client/imapc-connection.h + +2023-02-09 17:03:00 +0200 Timo Sirainen (2d6514adf9) + + lib-imap-client: Rename imapc_connection.selecting_box to + qresync_selecting_box + + It's only used when QRESYNC extension is enabled. + +M src/lib-imap-client/imapc-connection.c + +2023-02-09 16:21:24 +0200 Timo Sirainen (dbe23ac284) + + imapc: Fix handling EXISTS reply to previous mailbox while selecting new + mailbox + + For example if the communication was: + + C: a SELECT box1 + ... C: b SELECT box2 S: * 10 EXISTS S: * 1 EXISTS S: * OK [UIDVALIDITY + 1675948459] UIDs valid S: ... S: b OK + + The first EXISTS is meant for box1, not box2. Fixed by not starting a FETCH + (FLAGS) for the mailbox being selected until the tagged reply is received. + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2023-02-09 16:12:35 +0200 Timo Sirainen (a11c232854) + + imapc: Don't process untagged replies in mailbox that isn't fully selected + yet + + For example if the communication was: + + C: a SELECT box1 + ... C: b SELECT box2 S: * 1 EXPUNGE S: * 1 EXISTS S: * OK [UIDVALIDITY + 1675948459] UIDs valid S: ... S: b OK + + The expunge was intended for box1, not box2. This caused: Warning: + imapc(...): Mailbox '...' state corrupted: EXPUNGE received for empty + mailbox - reconnecting + + Fixed this by ignoring untagged EXPUNGE, FETCH, SEARCH and ESEARCH replies + when the UIDVALIDITY reply hasn't been yet received for a mailbox. + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-storage.h + +2023-02-08 20:40:41 +0200 Aki Tuomi (cf7d19e729) + + auth: test-lua - Check that password is returned in lookup + + +M src/auth/test-lua.c + +2023-02-08 20:32:57 +0200 Aki Tuomi (0cc4207a33) + + auth: test-lua - Test bad keynames end up ignored + + +M src/auth/test-lua.c + +2023-02-01 13:58:42 +0200 Aki Tuomi (97e121bb6d) + + lib-storage: mail-user - Add event_ prefixed values from userdb as event + fields + + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2023-02-01 13:53:42 +0200 Aki Tuomi (01263527d5) + + login-common: Add event_ prefixed values from auth as event fields + + +M src/lib-auth/auth-client-request.c +M src/login-common/client-common-auth.c +M src/login-common/sasl-server.c + +2023-02-06 21:23:48 +0200 Aki Tuomi (bb8fbcc60a) + + auth: db-lua - Skip invalid keys and values on field export + + +M src/auth/db-lua.c + +2023-01-20 16:41:47 +0100 Markus Valentin (0e3b992877) + + maildir: maildir_mailbox_open() - Split off maildir_is_selectable() + + +M src/lib-storage/index/maildir/maildir-storage.c + +2023-01-20 16:40:22 +0100 Markus Valentin (7522de9385) + + maildir: maildir_mailbox_open() - If the namespace root or INBOX has any + subdir create others as well + + +M src/lib-storage/index/maildir/maildir-storage.c + +2023-01-20 08:50:48 +0100 Markus Valentin (d669ab7d1b) + + maildir: maildir_mailbox_open() - Disable maildir subdirectory creation for + INBOX + + This was added in 522925f6e9ff8fe9592511c2221b3d6526d4cbf4. In the meantime + autocreate code changed so this is no longer valid. + +M src/lib-storage/index/maildir/maildir-storage.c + +2023-01-09 15:10:47 +0100 Markus Valentin (dc1d871a38) + + welcome-plugin: Remove welcome_open_box() + + +M src/plugins/welcome/welcome-plugin.c + +2023-01-09 15:06:54 +0100 Markus Valentin (171295bdef) + + welcome-plugin: Move script_execute() to welcome_create_box() + + The welcome script was executed while opening the INBOX only when the same + session had created it. This could have led to unexpectedly not executing + welcome when not opening the mailbox right after it was created. + + The original code delayed the welcome script run because mailbox creation + wasn't finished until the mailbox was opened. This seems to have become + fixed at some point. + +M src/plugins/welcome/welcome-plugin.c + +2023-01-17 08:44:55 +0200 Timo Sirainen (cb666c441a) + + lib-http: server - Fix potential crash with previous change on client + disconnect + + Broken by 1418d1e9018fc34287722467c6ee506f3e378e1a + +M src/lib-http/http-server-response.c + +2023-01-11 14:32:20 +0200 Timo Sirainen (1414b26044) + + lib-http: test-http-payload - Use ostream-final-trickle for server + connections + + +M src/lib-http/test-http-payload.c + +2023-01-11 14:31:55 +0200 Timo Sirainen (72de31a36e) + + lib-http: test-http-payload - Add filenames to data mismatch error messages + + +M src/lib-http/test-http-payload.c + +2023-01-11 14:26:53 +0200 Timo Sirainen (b0801787b2) + + lib-test: Add ostream-final-trickle + + +M src/lib-test/Makefile.am +A src/lib-test/ostream-final-trickle.c +A src/lib-test/ostream-final-trickle.h + +2023-01-11 16:02:38 +0200 Timo Sirainen (d3a0ff0ef3) + + lib: Add connection_vfuncs.init() + + +M src/lib/connection.c +M src/lib/connection.h + +2023-01-12 12:23:31 +0200 Timo Sirainen (e72869b16a) + + lib-http: server - Don't disconnect client before response is fully sent + + This could happen at least when the payload is empty and the final LF was + buffered. + +M src/lib-http/http-server-response.c + +2023-01-11 00:44:40 +0200 Timo Sirainen (a5bd8e1bc5) + + lib-http: server - Don't disconnect client before payload is fully sent + + +M src/lib-http/http-server-response.c + +2023-01-12 17:17:29 +0200 Timo Sirainen (ec90c65b92) + + lib-storage: Add mail_storage_service_input.unexpanded_set_parser + + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h + +2022-11-23 09:21:10 +0200 Aki Tuomi (90ac2496ca) + + NEWS: Update news + + +M NEWS + +2022-12-28 12:19:11 +0200 Aki Tuomi (ed402ee9a7) + + auth: Fix auth_request_password_verify() result handling + + Pass the result directly to caller, as auth_request_password_verify() + returns passdb result already. + +M src/auth/auth-worker-client.c +M src/auth/passdb-cache.c +M src/auth/passdb-dict.c +M src/auth/passdb-ldap.c +M src/auth/passdb-lua.c +M src/auth/passdb-passwd-file.c +M src/auth/passdb-passwd.c +M src/auth/passdb-sql.c +M src/auth/passdb-static.c + +2022-12-28 12:05:39 +0200 Aki Tuomi (65d5b77f0e) + + auth: Change auth_request_password_verify() to return enum passdb_result + + This does not break anything, because PASSDB_RESULT_OK is 1 and mismatch is + 0. + +M src/auth/auth-request.c +M src/auth/auth-request.h + +2022-12-26 23:48:27 +0200 Timo Sirainen (8832f6c002) + + lib-storage: Fix unnecessary data stack growth when iterating mailboxes + + When listing mailbox list indexes, it was possible that each iteration + increased the data stack memory usage. It was all freed at the end though, + so this didn't cause any permanent leaks. + + Broken by 4fdb040d2471c6e5006579bef1dd0586f89c8570 + +M src/lib-storage/list/mailbox-list-index-iter.c + +2022-12-14 15:07:38 +0200 Aki Tuomi (1fc7d5465f) + + lib-lua: http - Use correct dns-client path + + The current code tries to look it up from user homedir sometimes. + + Broken in 5b56debd31800ec45fc0c6529b138d1ce943b0aa + +M src/lib-lua/dlua-dovecot-http.c + +2022-12-01 10:54:38 +0100 Markus Valentin (ea3859fd59) + + lib-sql: Add sql_statement_set_no_log_expanded_values() + + This allows to store no_log_expanded_values to sql_statement. + +M src/lib-dict-backend/dict-sql.c +M src/lib-sql/sql-api-private.h +M src/lib-sql/sql-api.c +M src/lib-sql/sql-api.h + +2022-12-01 11:13:16 +0100 Markus Valentin (dd7f5beff9) + + dict: Implement DICT_PROTOCOL_CMD_HIDE_LOG_VALUES for dict and dict-proxy + + +M src/dict/dict-commands.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-client.h + +2022-12-01 11:03:26 +0100 Markus Valentin (b94b31d5a9) + + lib-dict: Add .set_hide_log_values() to dict vfuncs + + This is used to set hide_log_values in dict op settings. + +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c +M src/lib-dict/dict.h + +2022-12-05 11:58:31 +0100 Markus Valentin (0f5980d01e) + + cassandra: Rename query to log_query and initialize it with + sql_statement_get_log_query() + + Also add sql_statement_get_log_query() to sql-api. + +M src/lib-sql/driver-cassandra.c +M src/lib-sql/sql-api-private.h +M src/lib-sql/sql-api.c + +2022-12-05 11:50:30 +0100 Markus Valentin (ec9f878128) + + lib-event: Add event_unset_log_message_callback() + + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2022-11-28 11:17:11 +0100 Markus Valentin (74bbb6b0e9) + + fs-api: Add fs_get_event() + + +M src/lib-fs/fs-api.c +M src/lib-fs/fs-api.h + +2022-12-01 12:37:17 +0200 Timo Sirainen (f23ca5016f) + + pop3: Fix assert-crash when POP3 command name contained ':' + + The cmd_ reason code now only uses valid command names. + + Broken by d2ab26be6038bd53b13a3ff18c403d6c192c1d91 with incomplete fix in + 1309137812424c80e63d3c1052795b43d6e19803. + + Fixes: Panic: event_reason_code_prefix(): name has ':' + +M src/pop3/pop3-client.c +M src/pop3/pop3-commands.c +M src/pop3/pop3-commands.h + +2022-12-01 12:32:28 +0200 Timo Sirainen (cdd778233d) + + pop3: Move pop3 commands to array and add pop3_command_find() + + +M src/pop3/pop3-commands.c +M src/pop3/pop3-commands.h + +2022-11-23 09:21:10 +0200 Aki Tuomi (1f127c8a59) + + NEWS: Update news + + +M NEWS + +2022-11-14 23:27:33 +0200 Timo Sirainen (88150e0bb8) + + lmtp: Fix restoring global log prefix after session is finished + + Broken by 069dfd657fd91a0e2a3a9307a0cf499d795f27f2 + + This change also slightly changes the lmtp log prefixes in some places. It + removes "conn $ip:$port [$idx]: rcpt $user:" from some of the log messages + (but that wasn't in all of the log messages anyway), but it now always + includes mail_log_prefix in these log messages, which previously wasn't + always set at that point yet. + +M src/lmtp/main.c + +2022-10-21 13:32:48 +0000 Marco Bettini (805db6b027) + + fts: struct fts_user - Drop data_languages + + +M src/plugins/fts/fts-user.c +M src/plugins/fts/fts-user.h + +2022-10-21 09:15:04 +0000 Marco Bettini (74d8e389bf) + + fts: fts-search-args - Fix stopwords expansion (only on multiple languges + and with stopword filter enabled) + + +M src/plugins/fts/fts-search-args.c + +2022-10-20 14:07:23 +0000 Marco Bettini (07ec8339ee) + + lib-storage: enum mail_search_arg_type - Add SEARCH_NIL + + +M src/lib-storage/index/imapc/imapc-search.c +M src/lib-storage/index/index-search.c +M src/lib-storage/mail-search-args-cmdline.c +M src/lib-storage/mail-search-args-imap.c +M src/lib-storage/mail-search-args-simplify.c +M src/lib-storage/mail-search-register-imap.c +M src/lib-storage/mail-search.c +M src/lib-storage/mail-search.h +M src/lib-storage/test-mail-search-args-simplify.c + +2022-11-09 15:29:39 +0000 Marco Bettini (f41286b8f1) + + lib-storage: mail_search_args_simplify_drop_redundant_args() - Apply + Absorptive law versus all terms, not just the 1st + + +M src/lib-storage/mail-search-args-simplify.c +M src/lib-storage/mail-search.c +M src/lib-storage/mail-search.h +M src/lib-storage/test-mail-search-args-simplify.c + +2022-11-03 17:40:28 +0200 Timo Sirainen (8fb6b9e1b8) + + dsync: Skip autocreated mailboxes that haven't been created yet + + +M src/doveadm/dsync/dsync-mailbox-tree-fill.c + +2022-11-04 14:01:14 +0200 Timo Sirainen (b05564d157) + + imapc: Fix listing INBOX when INBOX is already the namespace prefix + + This especially caused problems when using dsync with imapc, resulting in + "Remote lost mailbox GUID" errors. + +M src/lib-storage/index/imapc/imapc-list.c + +2022-11-01 11:21:34 +0200 Timo Sirainen (142c054f85) + + replicator: Fix crash when importing user not listed by userdb iteration + + Broken by 31545b4f38ea85615f0111a33d630a03d92d22ab + +M src/replication/replicator/replicator-queue.c + +2022-08-16 23:42:51 +0300 Timo Sirainen (7286076402) + + replicator: Add unit test to replicator-queue + + +M src/replication/replicator/Makefile.am +A src/replication/replicator/test-replicator-queue.c + +2022-10-28 17:57:03 +0300 Timo Sirainen (95ec1043e0) + + replicator: Add replicator_queue_count() and replicator_queue_peek() + + These will be useful for the following unit test. + +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-queue.h + +2022-10-25 15:39:39 +0300 Timo Sirainen (8190571703) + + replicator: Add "next sync secs" field to doveadm replicator status + + +M src/doveadm/doveadm-replicator.c +M src/replication/replicator/doveadm-connection.c + +2022-10-25 13:27:23 +0300 Timo Sirainen (390e5a4c3d) + + replicator: Make sure to prevent request starvation + + This synchronizes how priority queue is ordered vs what + replicator_queue_want_sync_now() returns. The mismatch might have caused + request starvation in some situations because they behaved differently. + + Also this change makes sure that higher priority requests don't infinitely + block lower priority requests. Instead, they get a temporary boost time + (hardcoded 15-45 minutes). Afterwards lower priority requests are started to + be handled as well. + +M src/replication/replicator/doveadm-connection.c +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-queue.h + +2022-10-25 13:11:37 +0300 Timo Sirainen (97bf10e1da) + + replicator: Don't update user's last_update if priority doesn't change + + This didn't actually matter, since it was only used to check if importing + should update an existing user. However, importing is only run at startup + when all users have last_update=0 anyway. + + The following changes bring new use cases for last_update. + +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-queue.h + +2022-10-25 13:08:36 +0300 Timo Sirainen (5c9f252471) + + replicator: Change replicator_queue_add_sync_callback() to take user struct + + This is just to clean up the API to match the previous change. + +M src/replication/replicator/notify-connection.c +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-queue.h + +2022-10-25 12:49:03 +0300 Timo Sirainen (278d4a08f2) + + replicator: Fix user placement in replication queue + + Especially replicator queue importing and NOTIFY command could have placed + the user to wrong place in the queue, because they modified the last sync + timestamps afterwards. + + Fixed by splitting replicator_queue_add() into get/update/add(), so all the + necessary changes can be done before replicator_queue_add() is used to place + the user into the queue. + +M src/replication/replicator/doveadm-connection.c +M src/replication/replicator/notify-connection.c +M src/replication/replicator/replicator-queue-auth.c +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-queue.h + +2022-10-28 00:56:29 +0300 Timo Sirainen (94f620c4da) + + maildir: If mailbox create fails, don't try to apply mailbox_update changes + + This was especially causing problems with mailbox GUID mismatches in dsync. + The mismatch wasn't automatically fixed, because mailbox_create() + incorrectly kept updating the mailbox GUID for the already existing mailbox. + + Fixes errors such as: Remote lost mailbox GUID ... (maybe it was just + deleted?) + +M src/lib-storage/index/maildir/maildir-storage.c + +2022-10-27 02:56:45 +0300 Timo Sirainen (29c982fe52) + + lib-storage: mailbox_attribute_get*() - Fail early on with empty key lookup + + This fixes using mail_attribute_dict with dict-sql. + +M src/lib-storage/mailbox-attribute.c + +2022-03-03 14:21:00 +0100 Markus Valentin (2aa632260b) + + imapc: imapc_connection_disconnect_full() - Only conditionally abort + + Only abort commands if there are no reconnect commands. Otherwise these + still will be handled and the commands memory will be freed after handling + them. + + Broken by 6d16e82fa2c352974558e1415d06f07d8962fe09 + +M src/lib-imap-client/imapc-connection.c + +2022-02-28 15:50:05 +0100 Markus Valentin (e91916ad57) + + imapc: imapc_connection_disconnect_full() - Prevent leaking cmd->pool + + If the imapc connection was already disconnected when calling + imapc_connection_disconnect() it didn't clean up the commands and especially + the command pools. + +M src/lib-imap-client/imapc-connection.c + +2022-10-12 13:26:03 +0200 Markus Valentin (b0f19c117a) + + imapc: imapc_mailbox_get_status() - Implement STATUS_UNSEEN with INDEXPVT + + +M src/lib-storage/index/imapc/imapc-storage.c + +2022-10-19 09:26:55 +0300 Martti Rannanjärvi (410acf8760) + + lib-storage: mail-storage-list-index-rebuild - Don't use continue inside + T_BEGIN..T_END + + Coverity doesn't like using continue there. + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-10-05 15:42:25 +0300 Aki Tuomi (ef26f7d1ef) + + lib-storage: LAYOUT=index rebuild - Fix detecting duplicate mailbox GUIDs in + index + + Otherwise duplicate folders are not properly cleared out. + + Broken in 2fc8d7024bb161aab08031b8212a736301844858 + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-10-05 15:27:31 +0300 Aki Tuomi (ce65fc1fc9) + + lib-storage: LAYOUT=index rebuild - Remove existence check + + It's not needed. + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-09-27 15:03:37 +0300 Aki Tuomi (8dbd0d79cc) + + lib-storage: LAYOUT=index rebuild - Sort mailbox tree before creating + + Try to load the mailbox original name already from storage so we can sort & + create the mailbox tree in correct order. + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-09-27 13:01:29 +0300 Aki Tuomi (1ff6f0948a) + + lib-storage: LAYOUT=index rebuild - Remove first_list usage + + Instead, keep track of the list where box was found. + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-10-05 15:15:17 +0300 Aki Tuomi (b5b41c5410) + + lib-storage: LAYOUT=index rebuild - Remove useless check for LAYOUT=index + + This is already done when collecting namespaces. + + Simplifies next change. + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-09-21 11:14:40 +0300 Aki Tuomi (7c2176d18e) + + lib-storage: LAYOUT=index rebuild - Fix rebuilds when using multiple + namespaces + + The old code did not properly populate the mailbox list for each namespace, + but only for the first namespace. This caused mailbox storage existence + checks to always fail. + + This applies for LAYOUT=index only. + + Broken in 2fc8d7024bb161aab08031b8212a736301844858 + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2022-10-18 11:35:22 +0300 Aki Tuomi (bcdf913eb8) + + lib-storage: list - Add separators to mailbox names when decoding from index + + Mailbox name header decode did not add separators to name, producing only + FooBarBar, when it was supposed to give Foo/Bar/Baz. + + Broken in 8216a079d8aac93e2537ed79485e301350ff3887 + +M src/lib-storage/list/mailbox-list-index.c + +2022-10-11 11:17:11 +0300 Timo Sirainen (efafbfaad6) + + lib-storage: Store mailbox names unescaped in box-name header + + This header is used when rebuilding mailbox list indexes with LAYOUT=index. + The escape character is currently hardcoded for LAYOUT=index, so this + couldn't have broken anything unless the hardcoded separator was changed. + Still, this was wrong/confusing behavior. + +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/list/mailbox-list-index.h + +2022-06-15 12:19:55 +0300 Timo Sirainen (27131bdfa3) + + dict-redis: Fix crash when using synchronous commit + + Redis is usually used via dict proxy process, which always uses async + commit, so this didn't matter so much. + +M src/lib-dict/dict-redis.c + +2022-02-10 17:12:09 +0200 Timo Sirainen (a8f52eb73f) + + director: Fix handling auth_master_user_separator setting + + It was actually using a separate master_user_separator setting, causing + logins based on auth_master_user_separator to be hashed to wrong backends. + +M src/director/director-settings.c +M src/director/director-settings.h +M src/director/login-connection.c + +2022-09-27 14:28:38 +0300 Timo Sirainen (4a1b25a1c0) + + doveadm: Fix assert-crash on secondary service_user failures + + This mainly affected dsync when imapc authentication failed, but could have + also happened with copy and import commands. + + Fixes: Panic: file lib-event.c: line 506 (event_pop_global): assertion + failed: (event == current_global_event) + +M src/doveadm/doveadm-mail.c + +2022-09-28 16:21:26 +0300 Timo Sirainen (069dfd657f) + + lib-storage: Fix MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT to not change log + prefix in ioloop context changes + + This didn't appear to cause any visible bugs with the current code, but is + required by the next commit. + + Broken by ad13ab0702141065b79a1b7e8f2833e5b93871a4 + +M src/lib-storage/mail-storage-service.c + +2022-08-25 09:20:40 +0300 Aki Tuomi (62f388b03e) + + doc/example-config: Document submissions/465 for submission-login + + +M doc/example-config/conf.d/10-master.conf + +2022-02-22 17:47:55 +0100 Timo Sirainen (08bf01a739) + + lib-storage: Avoid calling mail_set_attachment_keywords() recursively + + It doesn't break, but it's unnecessary work. + +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2022-02-22 17:44:02 +0100 Timo Sirainen (73962c1f59) + + lib-imap: imap_bodystructure_parse*() - Reset parts.data on failure + + Having the data filled only to some message_parts can confuse the callers, + thinking that all the parts were successfully filled. + + Fixes: Panic: file message-part-data.c: line 579 + (message_part_is_attachment): assertion failed: (data != NULL) + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2022-06-16 10:57:15 +0300 Timo Sirainen (300b5c257b) + + dsync: Add more debug logging + + +M src/doveadm/dsync/dsync-mailbox-import.c + +2022-06-16 10:55:42 +0300 Timo Sirainen (8609825d4e) + + dsync: Fix dsync_features=no-header-hashes to match UIDs + + Mails were previously assumed to be the same, even if their UIDs didn't + match. This caused the sync to misbehave in some situations. + +M src/doveadm/dsync/dsync-mailbox-import.c + +2022-02-04 09:33:34 +0200 Aki Tuomi (4c56bab522) + + lib: ioloop-kqueue - Include time-util.h + + Needed to compile on MacOS + +M src/lib/ioloop-notify-kqueue.c + +2022-05-16 11:04:10 +0200 Timo Sirainen (7accb09647) + + util: dovecot-sysreport - Add timestamps before/after "ps" output + + Sometimes running "ps" can take a while, so make it clear in the output if + this has happened. + +M src/util/dovecot-sysreport + +2022-05-16 10:52:54 +0200 Timo Sirainen (fe8710dde7) + + util: dovecot-sysreport - Wait 3 seconds between "ps" outputs + + This allows showing more clearly in ps_output file whether a process is + using 100% CPU. + +M src/util/dovecot-sysreport + +2022-06-13 09:56:13 +0300 Timo Sirainen (a5ffdc8deb) + + doveadm deduplicate: Allocate memory properly for keys in hash table + + This caused wrong mails to be deleted somewhat randomly. Broken by + 320844f50cd669b602d30210e2e5216f65d2050f + +M src/doveadm/doveadm-mail-deduplicate.c + +2022-06-07 09:40:10 +0300 Martti Rannanjärvi (f0a9cbfb9d) + + auth: db_oauth2_have_all_fields() - Fix auth field existence check + + The correct pointer to pass on there is field, since ptr is the original + which still includes the ending }. + + Broken in 9b670175445a75987a713ff899d1a945255b0b5b and incorrectly fixed in + 5c2f3d0b85830d18dbb8b45b348da091e24d1b3b. + +M src/auth/db-oauth2.c + +2022-05-24 15:52:26 +0300 Timo Sirainen (c4086c78a8) + + lib-compression: istream-decompress - Copy parent stream name + + This is needed, because istream-decompress doesn't actually use the parent + stream as the istream parent. + +M src/lib-compression/istream-decompress.c + +2022-05-19 12:39:55 +0300 Aki Tuomi (8b3b959d0c) + + stats: stats-service-openmetrics - Always clear the stack before next metric + body + + If the attempt of generating output for the previous metric doesn’t + completely consume the stack, the next metric will start with a non-empty + stack, which breaks the metrics output. + +M src/stats/stats-service-openmetrics.c + +2022-05-19 11:24:23 +0200 Timo Sirainen (9708531c04) + + doveadm: Add dsync_features=no-header-hashes + + When this setting is enabled and one dsync side doesn't support mail GUIDs, + there is no fallback to using header hashes. Instead, dsync assumes that all + mails with identical IMAP UIDs contains the same mail contents. This can + significantly improve dsync performance with some IMAP servers that don't + support caching Date/Message-ID headers. + +M src/doveadm/doveadm-dsync.c +M src/doveadm/doveadm-settings.c +M src/doveadm/doveadm-settings.h +M src/doveadm/dsync/dsync-brain-mailbox.c +M src/doveadm/dsync/dsync-brain-private.h +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-brain.h +M src/doveadm/dsync/dsync-mailbox-import.c +M src/doveadm/dsync/dsync-mailbox-import.h + +2022-05-18 11:31:44 +0300 Timo Sirainen (30e6947179) + + auth: Fix assert-crash in iterating multiple userdbs + + Broken by 501e17ba6b448ba3c88338596e0e8f99f0693f79 + + Fixes: Panic: file userdb-blocking.c: line 125 (userdb_blocking_iter_next): + assertion failed: (ctx->conn != NULL) + +M src/auth/auth-master-connection.c + +2022-05-02 13:12:26 +0000 Marco Bettini (e56bb5e361) + + lib: Fix for clang Wstrict-bool pragma failing on unpatched clang + + Note that clang recognises GCC diagnostic pragmas too, so there is no need + for distinct pragmas in this case + +M src/lib/event-filter-lexer.l +M src/lib/event-filter-parser.y + +2022-05-02 11:14:10 +0000 Marco Bettini (fdf4cf0d01) + + quota: Fix for clang -Wstrict-bool clashing with #include + + +M src/plugins/quota/Makefile.am +A src/plugins/quota/rquota-pragmas.h + +2022-05-02 11:13:41 +0000 Marco Bettini (2f8682fc0d) + + m4: adding check for clang -Wstrict-bool availability + + +M configure.ac +M m4/dovecot.m4 + +2022-05-17 09:05:20 +0200 Timo Sirainen (39abdd9343) + + submission: Don't log write() errors that fail due to ECONNRESET + + These happen only if client initialization fails. + +M src/submission/main.c + +2022-05-17 09:03:47 +0200 Timo Sirainen (06e883ec95) + + imap: Don't log write() errors that fail due to ECONNRESET + + These happen only before the client is fully initialized. + +M src/imap/main.c + +2022-05-03 00:27:47 +0300 Timo Sirainen (a91f361d84) + + fts: Fix optimizing searches in virtual mailboxes without up-to-date indexes + + This could have caused header searches in virtual mailboxes to not return + all results when fts_enforced!=yes + + Broken by 9705b81fb51b5bdeaba12932a390ced2cc9dcad7 + +M src/plugins/fts/fts-storage.c + +2022-04-25 10:43:45 +0300 Aki Tuomi (97f19460a9) + + lib-lua: dlua-dovecot-http - Support more settings with HTTP client + + +M src/lib-lua/dlua-dovecot-http.c + +2022-04-25 14:27:12 +0300 Aki Tuomi (3eddd5eba5) + + lib-http: Rename max_auto_retry_delay to max_auto_retry_delay_secs + + +M src/lib-http/http-client-request.c +M src/lib-http/http-client.c +M src/lib-http/http-client.h + +2022-04-19 11:42:05 +0300 Timo Sirainen (1c6c3c320d) + + auth: auth_worker_call() - Return void instead of the connection + + The return value is no longer necessary, and it most likely would just be + used wrong. + +M src/auth/auth-worker-server.c +M src/auth/auth-worker-server.h + +2022-04-19 11:40:52 +0300 Timo Sirainen (94577c4450) + + auth: Fix crash when user iteration request is queued + + auth_worker_call() returns NULL when the request couldn't be handled + immediately, which would result in NULL pointer dereference later on. + +M src/auth/userdb-blocking.c + +2022-04-19 11:39:35 +0300 Timo Sirainen (f89c9e587e) + + auth: Add connection parameter to auth_worker_callback_t + + +M src/auth/auth-worker-server.c +M src/auth/auth-worker-server.h +M src/auth/passdb-blocking.c +M src/auth/passdb-cache.c +M src/auth/userdb-blocking.c + +2022-04-14 13:46:59 +0200 Timo Sirainen (865fb4f3c1) + + doveadm: Fix hang when flushing a corked print-ostream + + This could have happened at least with doveadm sync/backup command, i.e. + causing replication to hang until timeout is reached: + + Error: write() failed: Timed out after 60 seconds + +M src/doveadm/doveadm-print-server.c + +2022-04-08 15:59:59 +0300 Timo Sirainen (0dd36a73e4) + + lib-index: Always write tail offset the same as head offset + + The mail_index_write() must not be called unless this is safe to do. This + prevents unnecessarily reading through dovecot.index.log between tail..head + offsets, which can be expensive due to modseq calculation. + +M src/lib-index/mail-index-write.c + +2022-04-08 15:10:53 +0300 Timo Sirainen (aa7d67e6d6) + + lib-index: Optimize modseq scanning by using the modseq header in index + + View is very commonly set to start reading new changes since dovecot.index + was last written. When reading the newer records in dovecot.index.log, the + modseq of each change is needed to be known. However, the initial modseq + calculation was usually done inefficiently by reading the whole + dovecot.index.log from the beginning of the file. This change prevents that + by using instead the "modseq" header in dovecot.index to get the initial + modseq. + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-modseq.c +M src/lib-index/mail-index-modseq.h +M src/lib-index/mail-index-private.h +M src/lib-index/mail-transaction-log-modseq.c + +2022-04-08 13:42:55 +0300 Timo Sirainen (40e2a21f83) + + lib-index: Handle 0-sized dovecot.index.log record properly + + The previous behavior was to just silently ignore it and have the next write + to the transaction log silently truncate away the trailing garbage. + + Now if the log file isn't locked the issue is still ignored, since it's + possible that this is just a race condition. But if the log is locked, it's + handled as corruption. + +M src/lib-index/mail-transaction-log-file.c + +2022-04-12 10:12:11 +0300 Aki Tuomi (36cbfb8e2b) + + lib: test-event-flatten - Use __FILE__ to get correct expected filename + + Fixes out of tree buids + + Broken in 4f752d381c8e19dd07d1e593996d02294668c8b6 + +M src/lib/test-event-flatten.c + +2022-03-01 10:01:06 +0200 Aki Tuomi (5c2f3d0b85) + + auth: db-oauth2 - Fix off by one in oauth2 variable handling + + Broken in 9b670175445a75987a713ff899d1a945255b0b5b + +M src/auth/db-oauth2.c + +2022-03-21 11:03:03 +0200 Timo Sirainen (dc40c6dbcf) + + dsync: Properly terminate escape_chars when escaping mailbox names + + Broken by 596c5a52e7e554571285e90063712cb0d37b34eb + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2022-03-02 09:39:30 -0500 Timo Sirainen (9e7503d439) + + dsync: Fix hierarchical mailbox name parts individually + + For example with filesystem-based mailbox formats it's not allowed to create + "box/../child" mailbox. With previous code dsync just gave up and created + the mailbox name based on its GUID. This is now improved to instead try to + insert '_' character after each hierarchy separator so the newly fixed + mailbox name is "box/_../child". + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2022-03-01 08:37:57 -0500 Timo Sirainen (801aae4bd5) + + dsync: Escape and unescape mailbox names as needed + + This should fix various issues with syncing local and remote mailbox names. + It especially avoids changing the escape character to alt_char. + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c +M src/doveadm/dsync/dsync-mailbox-tree.c +M src/doveadm/dsync/test-dsync-mailbox-tree-sync.c + +2022-03-01 11:51:04 -0500 Timo Sirainen (cfd1b0687f) + + dsync: Track whether escape character was added just for dsync + + Will be used by the following commit + +M src/doveadm/doveadm-dsync.c +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-brain.h + +2022-03-01 08:36:55 -0500 Timo Sirainen (60ae30dd9e) + + dsync: Add clarifying comment about mailbox_log_record.maibox_guid contents + + +M src/doveadm/dsync/dsync-mailbox-tree-fill.c + +2022-03-01 08:06:14 -0500 Timo Sirainen (3864ecbfc7) + + dsync: Add escape_char to dsync-mailbox-tree + + This will be used by the following changes. + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c +M src/doveadm/dsync/dsync-brain-private.h +M src/doveadm/dsync/dsync-ibc-pipe.c +M src/doveadm/dsync/dsync-ibc-private.h +M src/doveadm/dsync/dsync-ibc-stream.c +M src/doveadm/dsync/dsync-ibc.c +M src/doveadm/dsync/dsync-ibc.h +M src/doveadm/dsync/dsync-mailbox-tree-private.h +M src/doveadm/dsync/dsync-mailbox-tree.c +M src/doveadm/dsync/dsync-mailbox-tree.h +M src/doveadm/dsync/test-dsync-mailbox-tree-sync.c + +2022-03-18 09:41:37 +0200 Aki Tuomi (f95da1fa2f) + + lib-test: test-subprocess - Free subprocess before forking + + Otherwise it'll leak memory. + + Broken in 34bdfdcbc7e3b374a219732329b6ce6d84a7666e + +M src/lib-test/test-subprocess.c + +2021-10-25 12:23:56 +0100 Siavash Tavakoli (25ae16cb40) + + lib-lua: Add a minimal interface to lib-http + + Adds the ability to + - Creating http clients + - Creating http requests + - Adding arbitrary headers and payload to the http request + - Submitting the request to remote server and getting the response + +M src/lib-lua/Makefile.am +A src/lib-lua/dlua-dovecot-http.c +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-script-private.h + +2022-03-14 10:18:58 +0200 Aki Tuomi (e5ae6b26e9) + + doveadm-who: Do not parse numbers as IP addresses + + Fixes doveadm kick as well. + + Broken in 381daab1e3b56a0bc94d2191cf62beba0df51af9 + +M src/doveadm/doveadm-who.c + +2022-03-01 12:06:20 +0100 Markus Valentin (6026905b7a) + + lib: test-seqset-builder - Add missing seqset_builder_deinit() + + Fixes leaking memory when running tests. + +M src/lib/test-seq-set-builder.c + +2022-03-01 13:49:39 +0100 Markus Valentin (4540884c46) + + imapc: imapc_transaction_save_rollback() - Fix NULL-check for ctx->src_mbox + + Assert that unfinished context implies that ctx->src_mbox is non-NULL. Also + check for ctx->src_mbox being non-NULL before deinitializing it. + +M src/lib-storage/index/imapc/imapc-save.c + +2022-02-28 13:15:06 +0100 Markus Valentin (e5a07bd1c4) + + imapc: imapc_mailbox_msgmap_update() - Set new_message_r + + In case a message has not yet been keep the reply till syncing and do not + discard it right away. + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-02-24 15:31:39 +0100 Markus Valentin (f5fc15b1b1) + + imapc: Delay fetching state after untagged exists reply + + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-storage.h +M src/lib-storage/index/imapc/imapc-sync.c + +2021-12-16 09:11:55 +0100 Markus Valentin (173cc696f8) + + imapc: imapc_copy() - Make sure capabilities are known before copying + + +M src/lib-storage/index/imapc/imapc-save.c + +2021-11-11 16:17:35 +0100 Markus Valentin (09bfbb4cb1) + + imapc: Implement rollback for failed copies + + +M src/lib-storage/index/imapc/imapc-save.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-11-11 18:31:54 +0100 Markus Valentin (95baaaf454) + + imapc: imapc_save_copyuid() deduplicate code + + +M src/lib-storage/index/imapc/imapc-save.c + +2021-11-11 16:18:09 +0100 Markus Valentin (1e888011d0) + + imapc: Enable bulk copying if remote backend has UIDPLUS capability + + +M src/lib-storage/index/imapc/imapc-save.c + +2021-11-11 14:52:54 +0100 Markus Valentin (79b5dc6024) + + imapc: Implement bulk copying for imapc + + +M src/lib-storage/index/imapc/imapc-save.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-11-11 16:10:53 +0100 Markus Valentin (d8ac772071) + + imapc: Extract imapc_copy_simple() from imapc_copy() + + Keep the old one by one copying functionality as simple call. This will be + used if the remote backend does not have the UIDPLUS capability. + +M src/lib-storage/index/imapc/imapc-save.c + +2022-01-12 15:09:16 +0100 Markus Valentin (dd9923ed99) + + lib-storage: index_save_context_free() - Add assertion on non-NULL + ctx->dest_mail + + +M src/lib-storage/index/index-storage.c + +2021-12-08 17:17:56 +0100 Markus Valentin (ed093cb058) + + lib: Add seq-set-builder and tests for it + + +M src/lib/Makefile.am +A src/lib/seq-set-builder.c +A src/lib/seq-set-builder.h +M src/lib/test-lib.inc +A src/lib/test-seq-set-builder.c + +2022-02-10 17:37:59 +0100 Marco Bettini (0b8d22e109) + + lib-storage: imapc_mailbox_close() - Remove unprocessed + untagged_fetch_contexts + + +M src/lib-storage/index/imapc/imapc-storage.c + +2022-02-10 16:26:10 +0100 Marco Bettini (589f8b1eba) + + lib-storage: Remove trainling spaces + + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-sync.c + +2022-02-02 16:58:24 +0100 Markus Valentin (6b7a40bd5d) + + imapc: imapc_sync_handle_untagged_fetches() - Commit after adding the + untagged fetch messages + + The absence of the commit could have caused issues when imapc_sync_finish() + was not called as it left mbox->delayed_sync_trans initialized but + mbox->delayed_sync_view was NULL. + + Broken by 55a8c2d294bb2f764209c7ce455d258b2b7506f5 + +M src/lib-storage/index/imapc/imapc-sync.c + +2022-01-18 09:46:32 +0100 Markus Valentin (4b517a91b4) + + imapc: Start to handle new untagged fetch messages in imapc_sync() + + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-01-18 09:22:24 +0100 Markus Valentin (6d505f1b39) + + imapc: Add imapc_sync_handle_untagged_fetches() + + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h +M src/lib-storage/index/imapc/imapc-sync.c + +2022-01-17 15:41:25 +0100 Markus Valentin (aa26f7a231) + + imapc: imapc_untagged_fetch_handle() - Change return type to bool + + When calling imapc_untagged_fetch_handle() also retrieve new_message_r from + it which allows imapc_mailbox_msgmap_update() to determine if the message + just handled was already in index or not. + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-01-27 08:06:16 +0100 Markus Valentin (235f491ffe) + + imapc: imapc_untagged_fetch_update_flags() - Reduce indentation + + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-01-27 07:56:32 +0100 Markus Valentin (ea5eb228c7) + + imapc: Split off imapc_untagged_fetch_update_flags() for handling flag + updates + + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-01-17 15:00:41 +0100 Markus Valentin (4656356f1e) + + imapc: Introduce imapc_untagged_fetch_ctx + + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-storage.h + +2022-01-17 13:57:56 +0100 Markus Valentin (332c4ef1a4) + + imapc: Decouple imapc_untagged_fetch parsing and handling + + +M src/lib-storage/index/imapc/imapc-mailbox.c + +2022-03-09 02:30:12 +0100 Stephan Bosch (a987d6b01f) + + submission-login: Add workaround for SMTP backend that is not Dovecot. + + Adds workaround called "exotic-backend". + +M src/submission-login/client-authenticate.c +M src/submission-login/submission-login-settings.c +M src/submission-login/submission-login-settings.h +M src/submission/submission-settings.c + +2022-03-02 15:40:16 +0200 Aki Tuomi (f703acd4a2) + + auth: auth-cache - Always use translated_username as cache key + + This fixes auth cache when passdb/userdb changes the user field. + +M src/auth/auth-cache.c + +2022-03-02 14:57:20 +0200 Aki Tuomi (020f8d5cff) + + auth: Set translated_user to requested_login_user in master login + + Fixes caching issues with master logins. + +M src/auth/auth-request-fields.c + +2021-07-06 14:02:41 +0300 Aki Tuomi (2e5b63175d) + + auth: Include cache hit/miss information in passdb/userdb lookup end events + + +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/passdb-cache.c + +2022-02-28 17:12:32 +0100 Marco Bettini (9a355e8aa7) + + fts: Parse mail header before checking whether to index it + + Fixes an issue where mime parts Content-type wasn't properly set, causing + binary mime parts to be fed to the indexes. + + Broken in ddb85f3533842aa7c4e943c10bbd3dcb745c2eae + +M src/plugins/fts/fts-build-mail.c + +2022-02-18 18:31:43 +0200 Timo Sirainen (1133504c52) + + dsync: Log reason why mailbox is synced with debug logging + + +M src/doveadm/dsync/dsync-brain-mailbox.c +M src/doveadm/dsync/dsync-brain-mails.c +M src/doveadm/dsync/dsync-brain-private.h + +2022-02-21 23:07:11 +0100 Timo Sirainen (8bc0825d97) + + dsync: If modseqs aren't permanent, assume HIGHESTMODSEQ=0 + + Otherwise the HIGHESTMODSEQ is just whatever happens to be in the in-memory + view of the index, which most likely isn't the true HIGHESTMODSEQ. Using 0 + makes it clear that the HIGHESTMODSEQ isn't valid and can't be used. + +M src/doveadm/dsync/dsync-brain-mailbox.c +M src/doveadm/dsync/dsync-mailbox-import.c + +2022-02-12 15:07:39 +0100 Stephan Bosch (9da4834ad0) + + submission-login: submission-proxy - Do not include initial response in AUTH + command if it is too long. + + +M src/submission-login/client.h +M src/submission-login/submission-proxy.c + +2022-02-21 21:36:55 +0100 Stephan Bosch (9a16de7aad) + + submission-login: submission-proxy - Rename local variable in + proxy_send_login(). + + +M src/submission-login/submission-proxy.c + +2022-02-21 21:32:45 +0100 Stephan Bosch (7a79eba26e) + + lib-smtp: smtp-client - Move SMTP_BASE_LINE_LENGTH_LIMIT definition to + smtp-common.h. + + +M src/lib-smtp/smtp-client-private.h +M src/lib-smtp/smtp-common.h + +2022-02-21 21:29:23 +0100 Stephan Bosch (10b0d57967) + + lib-smtp: smtp-client-connection - Rename SMTP_CLIENT_BASE_LINE_LENGTH_LIMIT + to SMTP_BASE_LINE_LENGTH_LIMIT. + + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2022-02-23 14:21:02 +0100 Stephan Bosch (84fe9d12fc) + + lib-smtp: smtp-client-connection - Fix typo in comment. + + +M src/lib-smtp/smtp-client-connection.c + +2022-02-22 14:14:20 +0100 Timo Sirainen (d5d8b69aa7) + + director: Fix crashes caused by changing host tag + + Fixes: Panic: file director.c: line 1175 (director_move_user): assertion + failed: (user->host->tag == host->tag) Panic: file director-request.c: line + 303 (director_request_continue_real): assertion failed: (user->host->tag == + mail_tag) + +M src/director/mail-host.c + +2022-02-22 14:10:02 +0100 Timo Sirainen (44b7eda458) + + director: Prevent loops where directors keep changing host tags + + +M src/director/director-connection.c + +2022-02-21 12:47:29 +0100 Timo Sirainen (7a64ec1ef8) + + lib: If log prefix update can't be sent to log, exit with FATAL_LOGERROR + + +M src/lib/failures.c + +2022-02-21 12:39:02 +0100 Timo Sirainen (1bf3963714) + + lib: Fix losing log prefix or IP change when log process is busy + + The fd for writing to log process is non-blocking. When sending options to + log process, it was done with write_full(), which stopped whenever EAGAIN + was returned. This error was simply ignored, and the logging code thought + that the prefix was successfully changed (or the IP was sent). + + This mainly caused a problem when processes were reused and log process was + busy. The prefix update could have failed, and the following logging would + be using the previous session's log prefix, i.e. log lines could have been + logged for the wrong user/session. + + Broken by 9372e48b702a3af5705785e08fbf47b0e37f2047 + +M src/lib/failures.c + +2022-02-06 14:20:08 +0100 Timo Sirainen (3e8befe6b5) + + dict: Fix potential timeout leak at deinit + + The deinit code could still trigger proctitle refresh. + +M src/dict/main.c + +2022-02-22 11:23:33 +0100 Timo Sirainen (17118d5970) + + dict: Make sure proctitle refresh timeout goes to the main ioloop + + In some situations it could have gone to dict_wait() ioloop, causing timeout + leaks or crashes. + +M src/dict/main.c + +2021-10-25 15:43:00 +0300 Timo Sirainen (974e970889) + + lib-storage: Don't use cached message_parts while message is being parsed + + Finish the parsing instead. Otherwise there can be some confusion about + parsed_bodystructure* fields, which indicate that data->parts have the + bodystructure info while in reality data->parts came from cached fields and + they have no bodystructure info. + +M src/lib-storage/index/index-mail.c + +2021-10-25 12:22:06 +0300 Timo Sirainen (6b6d61e9d1) + + lib-storage: Reset bodystructure parsing state when reseting message_parts + + Fixes: Panic: file message-part-data.c: line 28 + (message_part_data_is_plain_7bit): assertion failed: (data != NULL) + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h +M src/lib-storage/test-mail.c + +2022-02-09 23:12:19 +0200 Timo Sirainen (d31af56e9a) + + dict-sql: Fix assert-crash if trying to rollback an open set/inc transaction + + Fixes: Panic: file dict-sql.c: line 911 (sql_dict_transaction_free): + assertion failed: (!array_is_created(&ctx->prev_set)) + +M src/lib-dict-backend/dict-sql.c + +2022-02-04 04:30:48 +0200 Martti Rannanjärvi (b743c13533) + + anvil: connect_limit_deinit() - Free ident_pid_hash elements + + +M src/anvil/connect-limit.c + +2022-02-11 09:17:58 +0100 Marco Bettini (feebfa572a) + + indexer: indexer_client_status_callback() - Fix accessing freed memory + + Broken by a9683d7b3 + +M src/indexer/indexer-client.c + +2022-02-07 16:04:41 +0100 Marco Bettini (e65b925b86) + + indexer: Fix memory leak on indexer timeout + + +M src/indexer/indexer-client.c + +2022-02-04 01:28:45 +0200 Martti Rannanjärvi (ff258ecea5) + + stats: stats_metrics_remove_dynamic() - Free the removed metric + + +M src/stats/stats-metrics.c + +2022-02-04 01:32:18 +0200 Martti Rannanjärvi (8437a9224f) + + stats: stats_metric_alloc() - Fix indentation on p_new() call + + +M src/stats/stats-metrics.c + +2022-01-31 12:42:46 +0200 Martti Rannanjärvi (c5ef0ce4b7) + + replication: aggregator - Free replicator_connection content + + +M src/replication/aggregator/replicator-connection.c + +2022-02-01 14:22:31 +0100 Marco Bettini (12a751615b) + + mail-crypt: Fix for mail being wrongly storing encrypted via LMTP + + If 1st recipient has mail_crypt_save_version=2, and 2nd recipient has + mail_crypt_save_version=0, the mail for 2nd recipient is wrongly stored + encrypted. + + Same happens if 2nd recipient has mail_crypt disabled + +M src/plugins/mail-crypt/mail-crypt-plugin.c + +2020-03-31 13:51:09 +0300 Timo Sirainen (a707e6907c) + + mail-crypt: Remove "plugin disabled" texts from errors + + The plugin isn't just disabled, the user initialization fails entirely. + +M src/plugins/mail-crypt/mail-crypt-plugin.c + +2020-03-31 13:49:28 +0300 Timo Sirainen (4514e72dd7) + + mail-crypt: Fix crash when plugin is already initialized, but not used for + another user + + Fixes: Panic: Module context mail_crypt_user_module missing + +M src/plugins/mail-crypt/mail-crypt-plugin.c + +2021-04-29 21:09:01 +0300 Timo Sirainen (41e439f993) + + doveadm deduplicate: Simplify code by using doveadm_mail_iter_deinit_sync() + + +M src/doveadm/doveadm-mail-deduplicate.c + +2021-04-29 21:05:40 +0300 Timo Sirainen (d60ca6eaac) + + doveadm deduplicate: Optimize by deduplicating in a single transaction + + +M src/doveadm/doveadm-mail-deduplicate.c + +2022-02-14 13:50:02 +0200 Aki Tuomi (70a924bd84) + + pop3: Fix empty command handling + + If empty command is given, error out instead of trying to create event. This + fixes a crash caused by d2ab26be6038bd53b13a3ff18c403d6c192c1d91. + +M src/pop3/pop3-client.c + +2022-02-02 17:01:49 +0200 sergey.kitov (6b66c7694e) + + lib-master: Fix deinit memory leak with process_shutdown_filter + + +M src/lib-master/master-service.c + +2021-12-17 09:27:07 +0100 Marco Bettini (3b05ece496) + + plugins/fts: Allow plugins to carry state across calls during search session + + +M src/plugins/fts/fts-api.h +M src/plugins/fts/fts-search.c +M src/plugins/fts/fts-storage.h + +2022-01-26 16:09:29 +0200 Timo Sirainen (d6f90fc69e) + + auth: ldap: Drop partially saved results before retrying request + + Fixes "LDAP search returned multiple entries" happening after reconnects. + +M src/auth/db-ldap.c + +2022-01-26 16:03:27 +0200 Timo Sirainen (c870c58f3f) + + auth: ldap: If any requests were lost, reconnect to LDAP server + + +M src/auth/db-ldap.c + +2022-01-26 16:00:45 +0200 Timo Sirainen (30325b92b7) + + auth: ldap: If LDAP connection appears to be hanging, abort all old requests + + Retrying the reconnect might fix them, but since this situation isn't + supposed to happen in the first place, it's safer to just remove them + entirely to guarantee that it's not trying to keep retrying them for a long + time. + +M src/auth/db-ldap.c + +2022-01-26 14:46:55 +0200 Timo Sirainen (6360d26c8a) + + auth: ldap: Reconnect to server if receiving unknown msgid + + It's unclear why this happens. Is it a bug on server or client side? Either + way, this situation doesn't now fix itself automatically, so reconnecting + should help. + +M src/auth/db-ldap.c + +2022-01-26 14:43:01 +0200 Timo Sirainen (88d55b93ba) + + auth: ldap: Stop re-sending request after 3 disconnect+reconnects + + This prevents retrying the same LDAP request forever in situations where the + request causes LDAP server to become disconnected. This might fix some real + issues, but it was mainly implemented because testing the following commit + caused infinite looping. + +M src/auth/db-ldap.c +M src/auth/db-ldap.h + +2022-02-01 14:57:16 +0100 Timo Sirainen (342c872791) + + lmtp: proxy - Add per-connection counter to session_id + + This way connections to two different backends don't try to use the same + session_id. Add 'P' letter before the counter to clarify that it's the proxy + connection counter. + +M src/lmtp/lmtp-proxy.c + +2022-02-01 14:40:48 +0100 Timo Sirainen (84ebee8902) + + lmtp: Simplify/clarify per-recipient session ID + + The session ID is the transaction ID followed by an increasing recipient + count (number of RCPT commands) in the SMTP transaction. Clarify this by + adding 'R' letter before the counter. Also don't add the counter suffix at + all for the first recipient, since most transactions only have a single + recipient. + +M src/lmtp/lmtp-recipient.c + +2022-02-01 14:35:05 +0100 Timo Sirainen (edf91ac779) + + lib-smtp: server-transaction - Simplify/clarify transaction ID + + The transaction ID is the session ID followed by an increasing transaction + count (number of MAIL commands) in the SMTP server connection. Clarify this + by adding 'T' letter before the counter. Also don't add the counter suffix + at all for the first session, since most sessions only have a single + transaction. + +M src/lib-smtp/smtp-server-transaction.c + +2022-02-01 14:29:43 +0100 Timo Sirainen (f26b7d3c13) + + lib-smtp, lmtp: Add brackets to in logging + + This makes it clearer where the session-id stops. It's also similar to how + it is in mail_log_prefix. + +M src/lib-smtp/smtp-server-transaction.c +M src/lmtp/lmtp-proxy.c + +2022-02-01 15:03:15 +0100 Timo Sirainen (7a168bb5b5) + + lmtp: proxy - Use recipient-specific session-id when logging the result + + Instead of transaction ID, which is shared between recipients. + +M src/lmtp/lmtp-proxy.c + +2022-02-01 16:00:36 +0100 Timo Sirainen (d107539524) + + lmtp: struct lmtp_recipient - Change all strings to const + + +M src/lmtp/lmtp-recipient.h + +2022-01-27 21:40:25 +0100 Markus Valentin (9e151e0fd9) + + lib-storage: LAYOUT=index: Fix accessing freed memory when deleting + \Noselect parents + + Broken by f5328d6f7e4a8e460c736fa0336f5766aa58abda + +M src/lib-storage/list/mailbox-list-index-backend.c + +2022-01-28 10:54:53 +0100 Markus Valentin (dc5e01c2b2) + + lib-http: http_server_resource_create() - Remove unnecessary pool allocation + + Fixes leaking the memory pool created in stats_http_resource_add() + +M src/lib-http/http-server-resource.c + +2022-01-26 04:00:32 +0100 Stephan Bosch (4a4a4cf02b) + + lib-smtp: test-smtp-client-errors - Add test for succesful authentication + with large initial response. + + +M src/lib-smtp/test-smtp-client-errors.c + +2022-01-26 03:58:49 +0100 Stephan Bosch (3de3cd5987) + + lib-smtp: smtp-client-connection - Fix authentication with multi-roundtrip + SASL mechanisms. + + Before, it would fail with an unexpected reply error. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2022-01-24 01:39:19 +0100 Stephan Bosch (1a09d82bee) + + lib-smtp: test-smtp-client-errors - Add test for successful authentication. + + +M src/lib-smtp/test-smtp-client-errors.c + +2022-01-24 01:41:15 +0100 Stephan Bosch (20d406b91c) + + lib-smtp: test-smtp-client-errors - Rename "authentication failed" test to + "authentication". + + +M src/lib-smtp/test-smtp-client-errors.c + +2022-01-28 03:14:16 +0100 Stephan Bosch (5ad9c03dc4) + + lib-smtp: smtp-client - Fix maximum line length to include CRLF. + + +M src/lib-smtp/smtp-client-private.h + +2022-01-21 01:08:31 +0100 Stephan Bosch (c8671f74ee) + + lib-smtp: smtp-client-connection - Do not include initial response in AUTH + command if it is too long. + + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2022-01-21 02:26:18 +0100 Stephan Bosch (02e43414e0) + + lib-smtp: smtp-client-connection - Move auth cleanup to separate function. + + +M src/lib-smtp/smtp-client-connection.c + +2022-01-28 03:17:59 +0100 Stephan Bosch (76810027a5) + + lib-sasl: dsasl-client - Make dsasl_client_free(&NULL) a no-op. + + +M src/lib-sasl/dsasl-client.c +M src/lib-smtp/smtp-client-connection.c +M src/login-common/client-common-auth.c +M src/login-common/client-common.c + +2022-01-21 02:28:23 +0100 Stephan Bosch (94c8febccc) + + lib-smtp: smtp-client-connection - Reformat comment. + + +M src/lib-smtp/smtp-client-connection.c + +2022-01-26 19:28:33 +0100 Timo Sirainen (3e0a147292) + + indexer: Fix memory leak - worker_requests were never freed + + Broken by 141766b24f885259508ae39f2e18811018373bc7 + +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h + +2022-01-25 23:31:34 +0100 Timo Sirainen (8e0763ac32) + + indexer: Fix memory leak - session IDs were never freed + + Broken by a8dcd4e2332c73087e9b148d34259230a77edb28 + +M src/indexer/indexer-queue.c + +2021-12-01 12:21:48 +0200 Timo Sirainen (7b96f6cbf5) + + lib-storage: Fix search query that only contains SEARCH_MAILBOX_GUID + + Fixes assert-crash in virtual mailbox: + + Panic: file virtual-search.c: line 77 (virtual_search_get_records): + assertion failed: (result != 0) + +M src/lib-storage/index/index-search-private.h +M src/lib-storage/index/index-search.c + +2021-12-16 11:49:24 +0200 sergey.kitov (a97162ccc6) + + lib-master: Add process_shutdown_filter setting + + +M src/lib-master/master-service-private.h +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-settings.h +M src/lib-master/master-service.c +M src/lib-master/master-service.h + +2021-12-16 11:44:38 +0200 sergey.kitov (14f8d9c734) + + lib-master: Refactor parsing event filters from settings. + + +M src/lib-master/master-service-settings.c + +2021-12-16 11:38:53 +0200 sergey.kitov (623a7b2be8) + + lib-master: Remove check for client->filter == NULL before + event_filter_match(). + + +M src/lib-master/stats-client.c + +2021-12-16 11:38:08 +0200 sergey.kitov (8e99dae094) + + lib: Add check for NULL to event_filter_match(). + + +M src/lib/event-filter.c + +2021-12-15 15:19:04 +0200 sergey.kitov (181f1456d6) + + lib-master: Whitespace cleanup. + + +M src/lib-master/master-service-private.h +M src/lib-master/master-service.c +M src/lib-master/master-service.h + +2021-12-01 13:35:12 +0200 sergey.kitov (1425e94b93) + + lib-storage: Emit event with process stat in mail_user_deinit(). + + +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2021-12-07 16:58:43 +0200 sergey.kitov (d8c4013cdc) + + lib: Add event_add_int_non_zero() + + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-12-01 13:34:22 +0200 sergey.kitov (0ba13e8e70) + + lib: Add functionality for acquiring process stat. + + +M src/lib/Makefile.am +A src/lib/process-stat.c +A src/lib/process-stat.h + +2021-12-21 10:47:54 +0200 sergey.kitov (3a25648a1d) + + lib: add timeval_to_usecs() + + +M src/lib/time-util.h + +2021-12-20 16:17:54 +0200 sergey.kitov (578c5f4b8c) + + lib: Whitespace cleanup + + +M src/lib/lib-event.c + +2022-01-14 08:07:50 +0100 Markus Valentin (1e0870724b) + + lib-storage: mailbox-list: index_list_rename_mailbox() - Support NO-NOSELECT + + When NO-NOSELECT is configured delete parent mailboxes which are not + selectable or existant when renaming child mailboxes. + +M src/lib-storage/list/mailbox-list-index-backend.c + +2022-01-14 08:04:09 +0100 Markus Valentin (964fe86c5c) + + lib-storage: mailbox-list: index_list_delete_mailbox() - Support NO-NOSELECT + + When NO-NOSELECT is configured delete parent mailboxes which are not + selectable or not existant when deleting child mailboxes. + +M src/lib-storage/list/mailbox-list-index-backend.c + +2022-01-21 16:31:04 +0200 Timo Sirainen (77239a25c5) + + doveadm fetch/search: Use DOVEADM_MAIL_ITER_FLAG_STOP_WITH_CLIENT + + These commands only write output to the client, so it's safe to stop them if + the client disconnects. + +M src/doveadm/doveadm-mail-fetch.c +M src/doveadm/doveadm-mail-search.c + +2022-01-21 16:29:48 +0200 Timo Sirainen (4eb82acbc3) + + doveadm: doveadm_mail_iter_init() - Add + DOVEADM_MAIL_ITER_FLAG_STOP_WITH_CLIENT + + When this flag is used, the iteration is stopped if print ostream has + reported an error, i.e. doveadm-client has disconnected. + +M src/doveadm/doveadm-mail-iter.c +M src/doveadm/doveadm-mail-iter.h + +2022-01-21 16:24:39 +0200 Timo Sirainen (2b2cdb719b) + + doveadm: doveadm_mail_iter_init() - Change bool parameter to flags + + +M src/doveadm/doveadm-mail-altmove.c +M src/doveadm/doveadm-mail-copymove.c +M src/doveadm/doveadm-mail-deduplicate.c +M src/doveadm/doveadm-mail-expunge.c +M src/doveadm/doveadm-mail-fetch.c +M src/doveadm/doveadm-mail-flags.c +M src/doveadm/doveadm-mail-import.c +M src/doveadm/doveadm-mail-iter.c +M src/doveadm/doveadm-mail-iter.h +M src/doveadm/doveadm-mail-mailbox-cache.c +M src/doveadm/doveadm-mail-rebuild.c +M src/doveadm/doveadm-mail-search.c + +2022-01-20 14:16:51 +0100 Timo Sirainen (aacaf65d7f) + + doveadm-server: Fix hang when flushing print output and client disconnects + + +M src/doveadm/doveadm-print-server.c + +2022-01-20 14:13:48 +0100 Timo Sirainen (8f34eb952d) + + lib: ostream-multiplex - Call flush callbacks also when stream has failed + + It may be important for the flush callbacks to know when ostream has been + closed. This is a partial fix to prevent doveadm-server hanging when it's + printing lots of output and doveadm client disconnects. + +M src/lib/ostream-multiplex.c + +2022-01-20 13:34:50 +0100 Timo Sirainen (d902430e43) + + doveadm: Fix assert-crash when proxying causes print buffer to be flushed + + Fixes: Panic: file ioloop.c: line 865 (io_loop_destroy): assertion failed: + (ioloop == current_ioloop) + +M src/doveadm/doveadm-print-server.c + +2021-12-22 12:12:51 +0100 Markus Valentin (d02a022d73) + + imapc: Fix doveadm copy with imapc + + When copying to a mailbox with imapc it does not sync the destination + mailbox when opening. This created "Error: Syncing mailbox '$mailboxname' + failed: Internal error occurred." Prevent this error by checking for the + MAILBOX_FLAG_SAVEONLY flag which is used by doveadm to create the + destination mailbox. If that flag is set ignore that there was no initial + fetching done. + +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/imapc/imapc-sync.c + +2022-01-21 12:12:52 +0200 Martti Rannanjärvi (2088e0917e) + + configure.ac: Set dovecot version to 2.3.100.devel + + This helps with version comparisons. + +M configure.ac + +2022-01-14 04:02:09 +0100 Stephan Bosch (bcdc6ef0ec) + + submission: submission-backend-relay - Make sure QUIT command yields 221 + when relay connection is closed normally. + + Before, it would sometimes erroneously treat the closing connection as a + "connection lost" 421 situation. + +M src/submission/submission-backend-relay.c + +2022-01-14 04:01:29 +0100 Stephan Bosch (9f05ce1758) + + submission: submission-backend-relay - Fix segfault in QUIT command + client-side destruction. + + +M src/submission/submission-backend-relay.c + +2020-11-09 02:29:04 +0100 Stephan Bosch (a53380c353) + + lib-smtp: smtp-server-cmd-rset - Stop processing pipeline until RSET is + complete. + + A subsequent MAIL command could get reset in the middle otherwise. Before, + it only blocked input until a reply was submitted, but the transaction isn't + reset until the RSET command is complete (just before actually sending the + reply) which can cause issues when the subsequent MAIL command is already + being processed. + +M src/lib-smtp/smtp-server-cmd-rset.c + +2020-11-09 00:02:51 +0100 Stephan Bosch (5a7616f93b) + + lib-smtp: smtp-server-cmd-helo - Stop processing pipeline until HELO/EHLO is + complete. + + A subsequent MAIL command could get reset in the middle otherwise. Before, + it only blocked input until a reply was submitted, but the transaction isn't + reset until the EHLO/HELO command is complete (just before actually sending + the reply) which can cause issues when the subsequent MAIL command is + already being processed. + +M src/lib-smtp/smtp-server-cmd-helo.c + +2020-11-08 03:58:06 +0100 Stephan Bosch (5aeca06ad6) + + lib-smtp: smtp-server-command - Add + smtp_server_command_pipeline_block/unblock(). + + +M src/lib-smtp/smtp-server-command.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server.h + +2022-01-10 03:54:13 +0100 Stephan Bosch (d79841aa34) + + lib-smtp: smtp-client-transaction - Plug the command pipeline while + transaction is pending. + + This prevents commands submitted after creating the transaction from being + exectuted out-of-order before the transaction's MAIL command. + +M src/lib-smtp/smtp-client-transaction.c + +2022-01-10 03:53:41 +0100 Stephan Bosch (ffbf4efea2) + + lib-smtp: smtp-client-transaction - Add + smtp_client_command_mail_submit_after(). + + +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-command.h + +2022-01-10 01:18:56 +0100 Stephan Bosch (2ccec52a52) + + lib-smtp: smtp-client-transaction - Prevent recursion for + smtp_client_transaction_fail*(). + + +M src/lib-smtp/smtp-client-transaction.c + +2022-01-11 02:05:26 +0100 Stephan Bosch (c40e19df16) + + lib-smtp: Reformat smtp-server-cmd-quit.c. + + +M src/lib-smtp/smtp-server-cmd-quit.c + +2022-01-20 12:42:57 +0200 Timo Sirainen (6f703021eb) + + lib-storage: Don't delay setting mail event's log prefix + + This caused crashes if the mail event was kept referenced and used for + logging after struct mail was already freed. With the delayed mail event + creation the log prefix shouldn't be much of a performance problem, so just + set the prefix immediately. + + Partially reverts bc68e1c368db746557829f67556f3c72943b7956. + +M src/lib-storage/mail.c + +2022-01-19 15:07:58 +0100 Timo Sirainen (6b6465700f) + + configure: Update version to 2.3.devel + + +M configure.ac + +2021-11-30 12:47:52 +0200 Aki Tuomi (51bb266887) + + NEWS: Add news for 2.3.17.1 + + +M NEWS + +2021-09-28 12:40:29 +0300 Aki Tuomi (3330f8f631) + + NEWS: Add news for 2.3.17 + + +M NEWS + +2022-01-10 19:46:12 +0200 Timo Sirainen (26c5c2aa2b) + + lib-storage: Remove reason_code=mailbox:search + + Continues the slow per-mail event removals started in + f3c568e3cbc113920bc029e07e56619589c6a26d. + + Reverts 87cd6570a14b3f572fc6000f710df409371a4bcb + +M src/lib-storage/index/index-search.c + +2021-12-13 12:54:19 +0100 Stephan Bosch (c043787771) + + lmtp: lmtp-proxy - Add session ID to backend connection error replies. + + +M src/lmtp/lmtp-proxy.c + +2021-12-13 04:08:32 +0100 Stephan Bosch (b29d0df2ef) + + submssion: submission-backend-relay - Avoid logging two errors about a + connection problem. + + Earlier commit changed lib-smtp to consistently log an error for connection + problems, which causes a second error to occur for submission relay backend. + This is undesirable. + +M src/submission/submission-backend-relay.c + +2021-12-07 01:51:45 +0100 Stephan Bosch (08d650cb81) + + lmtp: lmtp-proxy - Add lmtp_verbose_replies setting. + + It causes the proxy to return errors with full details in replies to the + LMTP client. + +M src/lmtp/lmtp-proxy.c +M src/lmtp/lmtp-settings.c +M src/lmtp/lmtp-settings.h + +2021-12-27 11:35:05 +0100 Stephan Bosch (a0cd85f004) + + lmtp: lmtp-proxy - Split off lmtp_proxy_handle_connection_error(). + + +M src/lmtp/lmtp-proxy.c + +2022-01-04 21:20:22 +0100 Stephan Bosch (1d88bdfdf8) + + lmtp: lmtp-proxy - Change proxy connection failure message make more sense. + + +M src/lmtp/lmtp-proxy.c + +2021-12-07 01:58:32 +0100 Stephan Bosch (11b6ccdfce) + + lib-smtp: smtp-client - Add verbose_user_errors setting. + + It returns the detailed administrator errors as user error in the reply + returned to the calling application. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client.c +M src/lib-smtp/smtp-client.h + +2021-12-07 01:51:18 +0100 Stephan Bosch (40d49a038b) + + lib-smtp: smtp-client-connection - Log administrator connection failures at + a single place. + + +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2021-12-23 00:59:45 +0100 Stephan Bosch (f436df8709) + + lib-smtp: smtp-client-connection - Consistently log an error for connection + failures. + + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/test-smtp-client-errors.c + +2021-12-07 02:44:58 +0100 Stephan Bosch (5ef51c52ef) + + lib-smtp: smtp-client-connection - Add definition for repeatedly used + connection error. + + +M src/lib-smtp/smtp-client-connection.c + +2021-12-27 11:24:36 +0100 Stephan Bosch (06f838091b) + + lmtp: Reformat lmtp-proxy.c. + + +M src/lmtp/lmtp-proxy.c + +2021-12-07 01:23:13 +0100 Stephan Bosch (2e82fdb706) + + lib-smtp: Reformat smtp-client-connection.c. + + +M src/lib-smtp/smtp-client-connection.c + +2022-01-05 01:27:48 +0000 Stephan Bosch (3575639fc4) + + lib-compression: ostream-zlib - Fix signed vs unsigned comparison. + + +M src/lib-compression/ostream-zlib.c + +2022-01-05 01:25:34 +0000 Stephan Bosch (5108d7bddd) + + lib: test-event-flatten - Fix format string specifier for usec time + + +M src/lib/test-event-flatten.c + +2021-12-28 09:37:42 +0200 Timo Sirainen (f3c568e3cb) + + lib-storage: Remove most reason_code=mail:* + + Event reasons create events internally. This is rather expensive if it's + done for operations that access all emails in a large folder, e.g. SORT. The + per-mail reason_codes also didn't seem to be hugely helpful, so best to just + remove them. + + Some of the mail:* reasons were left where they are causing mail stream to + be opened anyway. In these cases the extra CPU used by event reasons is + relatively little. + + Reverts ce517f8323fa4a60b230f29712b207139badb3f0 + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail.c + +2021-12-20 11:05:39 +0200 Timo Sirainen (ac4d66e25e) + + maildir: maildir_filename_base_hash() - Disable ubsan integer wrapping + checks + + +M src/lib-storage/index/maildir/maildir-filename.c + +2021-12-09 18:06:11 +0100 Timo Sirainen (ac7bcc31c9) + + lib-fts: Reuse textcat handle between sessions + + textcat initialization is rather CPU intensive. Its configuration is + normally always the same between sessions, so we can keep the latest textcat + handle cached. + +M src/lib-fts/fts-language.c + +2021-11-29 17:05:18 +0100 Timo Sirainen (fd7248b707) + + lib-storage: Remove index_mail_data.seq + + The seq already exists in struct mail, so this unnecessarily duplicated it. + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2021-11-29 16:21:29 +0100 Timo Sirainen (767b689cfb) + + lib-storage: Minor optimization - Use mail_index_lookup_full() to avoid two + index lookups + + mail_index_is_expunged() was already internally doing the full lookup. + +M src/lib-storage/index/index-mail.c + +2021-11-29 16:16:30 +0100 Timo Sirainen (526a0f5b18) + + lib-index: mail_index_lookup_full() - Add expunged_r parameter + + +M src/lib-index/mail-index-modseq.c +M src/lib-index/mail-index-view.c +M src/lib-index/mail-index.h + +2021-11-29 13:26:25 +0100 Timo Sirainen (bc68e1c368) + + lib-storage: Optimize setting mail event log prefix + + This was much more important before mail event creation was delayed. In one + installation the t_strdup_printf() call itself took about 4% of the total + CPU usage. Now that mail events are delayed, this is likely much less of an + issue. Still, this is easy enough of an optimization that might as well do + it. + +M src/lib-storage/mail.c + +2021-11-29 15:46:04 +0100 Timo Sirainen (165be3edb6) + + lib-storage: Delay creating mail event until mail_event() is called + + Mails can be accessed a lot. The event handling code takes up a lot of CPU, + but most of the time the created event wasn't actually used for anything. + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.h +M src/lib-storage/mail.c + +2021-11-29 15:43:29 +0100 Timo Sirainen (a24e4a14f9) + + lib-storage: Make sure mail event is created before accessing streams or + metadata + + This is in preparation for the next commit which delays the mail event + creation. The event duration behaves better if the event is created before + any potentially slow access is done. + +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail.c + +2021-11-29 15:36:58 +0100 Timo Sirainen (58eef6713e) + + lib-storage: Move struct mail.event to mail_private + + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.h +M src/lib-storage/mail.c + +2021-11-29 15:32:28 +0100 Timo Sirainen (b0596718ab) + + lib-lda, lib-storage: Use mail_event() + + +M src/lib-lda/mail-send.c +M src/lib-storage/mail.c + +2021-11-29 15:31:17 +0100 Timo Sirainen (4b3775baf0) + + lib-storage: Add mail_event() + + +M src/lib-storage/mail-storage.h +M src/lib-storage/mail.c + +2021-11-29 18:39:22 +0100 Timo Sirainen (13fd3c3256) + + lib-storage: Add and use mail_metadata_access_start() + + +M src/lib-storage/index/maildir/maildir-mail.c +M src/lib-storage/index/raw/raw-mail.c +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail.c + +2021-11-29 18:32:09 +0100 Timo Sirainen (988a575c35) + + lib-storage: Add and use mail_stream_access_start() + + This replaces setting mail_stream_accessed directly. + +M src/lib-storage/index/dbox-multi/mdbox-mail.c +M src/lib-storage/index/dbox-single/sdbox-mail.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/imapc/imapc-save.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/maildir/maildir-mail.c +M src/lib-storage/index/mbox/mbox-mail.c +M src/lib-storage/index/pop3c/pop3c-mail.c +M src/lib-storage/index/raw/raw-mail.c +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail.c + +2021-11-29 18:35:31 +0100 Timo Sirainen (e06ee029f6) + + lib-storage: raw: get_stream() - Add missing lookup_abort and + mail_stream_accessed handling + + +M src/lib-storage/index/raw/raw-mail.c + +2021-11-29 18:34:43 +0100 Timo Sirainen (2f2e3b3d37) + + pop3c: Add missing lookup_abort and mail_stream_accessed handling + + +M src/lib-storage/index/pop3c/pop3c-mail.c + +2021-11-29 20:44:05 +0100 Timo Sirainen (5b97f3af04) + + maildir: get_stream() - Add missing lookup_abort and mail_stream_accessed + handling + + +M src/lib-storage/index/maildir/maildir-mail.c + +2021-11-29 18:24:30 +0100 Timo Sirainen (d7b8c40971) + + lib-storage: Rename mail.mail_stream_opened to mail_stream_accessed + + It is set to TRUE even if the mail stream couldn't successfully be opened, + so this describes it better. Also it's now consistent with + mail_metadata_accessed. + +M src/lib-storage/index/dbox-multi/mdbox-mail.c +M src/lib-storage/index/dbox-single/sdbox-mail.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mailbox-size.c +M src/lib-storage/index/index-sort.c +M src/lib-storage/index/mbox/mbox-mail.c +M src/lib-storage/mail-storage.h + +2021-12-03 10:44:10 +0200 Timo Sirainen (74b94e02e5) + + lib-index: Remove mail_cache_lookup_finished event + + This event was using too much CPU with commands that accessed lots of mails + (e.g. IMAP SORT). It also wasn't especially useful. + + Reverts 0d252dccb3013fea4d9a28bd5fafb5ea6e847d0e + +M src/lib-index/mail-cache-lookup.c + +2021-12-02 11:35:20 +0200 Timo Sirainen (1fb3dda9ac) + + lib-index: Use ATTR_COLD for error/corruption handling functions + + This could reduce CPU usage due to better branch prediction. + +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache.h +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-strmap.h +M src/lib-index/mail-index-sync-private.h +M src/lib-index/mail-index.h +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log.h + +2021-11-23 15:00:02 +0100 Timo Sirainen (4a74574d39) + + lib: pool_alloconly_destroy() optimization - Don't clear the last block + before free + + The block is going to be freed, so there's no need to clear it. + (The clearing still happens if clean_frees=TRUE.) + +M src/lib/mempool-alloconly.c + +2021-11-23 14:59:28 +0100 Timo Sirainen (40666e3bca) + + lib: pool_alloconly_destroy() - Deduplicate code + + +M src/lib/mempool-alloconly.c + +2021-11-23 14:58:39 +0100 Timo Sirainen (7c9ee911cf) + + lib: Split off pool_alloconly_free_block() + + +M src/lib/mempool-alloconly.c + +2021-11-23 14:56:10 +0100 Timo Sirainen (333bd2e628) + + lib: Split off pool_alloconly_free_blocks_until_last() + + +M src/lib/mempool-alloconly.c + +2021-11-23 15:17:49 +0200 Timo Sirainen (0bcc6897de) + + lib: Minor optimization - Avoid zeroing a newly created empty event field + + +M src/lib/lib-event.c + +2021-11-22 17:36:21 +0100 Timo Sirainen (9fc6965de1) + + lib: Remove copy of event_passthrough from struct event + + There was no need for it. This saves some memory and CPU. + + This change now prevents modifications to the event_passthrough, but nothing + was doing it before either. + +M src/lib/lib-event-private.h +M src/lib/lib-event.c + +2021-11-22 17:23:28 +0100 Timo Sirainen (a2ea3df64f) + + lib: Grow initial event pool size to 1024 bytes + + The old 64 bytes size wasn't enough to allocate even the struct event + itself. + +M src/lib/lib-event.c + +2021-12-15 09:19:40 +0100 Karl Fleischmann (793cae8549) + + login-common: Explicitly null client auth fields on proxy pool unref + + Explicitly setting `client_id` and `forward_fields` to null in the client + may reveal use-after-free issues when trying to access these fields on a + client proxy. + +M src/login-common/client-common.c + +2021-12-10 11:04:06 +0100 Karl Fleischmann (7ad1a92aa5) + + login-common: Use base index for aliases + + Define a base index for aliases in the login variable table. Assign values + via offset of that base index. This allows adding more values later without + updating any subsequent index. + +M src/login-common/client-common.c + +2021-12-10 11:32:37 +0100 Marco Bettini (ddb85f3533) + + fts: Add headers filters + + +M src/plugins/fts/fts-api-private.h +M src/plugins/fts/fts-api.c +M src/plugins/fts/fts-build-mail.c + +2021-12-10 11:30:08 +0100 Marco Bettini (24b66ca063) + + fts: fts-build-mail - Remove stray line + + +M src/plugins/fts/fts-build-mail.c + +2020-11-10 00:11:15 +0100 Stephan Bosch (a92209788d) + + auth: mech-scram - Amend comments. + + +M src/auth/mech-scram.c + +2020-11-10 00:11:11 +0100 Stephan Bosch (49b5780c29) + + auth: mech-scram - Fix handling of authzid. + + The gs2-header field was not recreated correctly for the final verification. + Fixed by storing the complete gs2-header value instead. + +M src/auth/mech-scram.c + +2020-11-10 00:11:07 +0100 Stephan Bosch (a164ea3786) + + auth: mech-scram - Properly size temporary string buffers. + + +M src/auth/mech-scram.c + +2020-11-10 00:11:03 +0100 Stephan Bosch (1ee7d0d807) + + auth: mech-scram - Restructure message parsing in + parse_scram_client_first(). + + +M src/auth/mech-scram.c + +2020-11-10 00:10:57 +0100 Stephan Bosch (6678648cfb) + + auth: Reformat mech-scram.c. + + +M src/auth/mech-scram.c + +2021-08-20 17:43:09 +0300 Timo Sirainen (15f25bf7ad) + + lib-storage: Return reason string in mailbox_vfuncs.list_index_has_changed() + + The callers can use it to log why the list index had changed. + +M src/lib-storage/index/index-storage.h +M src/lib-storage/index/index-sync.c +M src/lib-storage/index/maildir/maildir-sync-index.c +M src/lib-storage/index/maildir/maildir-sync.h +M src/lib-storage/index/mbox/mbox-sync-list-index.c +M src/lib-storage/index/mbox/mbox-sync-private.h +M src/lib-storage/list/mailbox-list-index-status.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/mail-storage-private.h +M src/plugins/virtual/virtual-storage.c + +2021-08-20 19:09:17 +0300 Timo Sirainen (e13768d2ee) + + lib-storage: Don't call mailbox_vfuncs.list_index_has_changed() in data + stack frame + + This will be required by the next change. + +M src/lib-storage/list/mailbox-list-index-iter.c +M src/lib-storage/list/mailbox-list-index-status.c +M src/lib-storage/list/mailbox-list-index.c + +2021-08-20 17:26:42 +0300 Timo Sirainen (6fb3e493e2) + + lib-storage: mailbox_list_index_view_open() - Log a debug line why index + isn't up-to-date + + +M src/lib-storage/list/mailbox-list-index.c + +2021-08-20 17:20:01 +0300 Timo Sirainen (49d2d1d9ba) + + lib-storage: mailbox_list_index_status() - Return failure reason string + + Log a debug line if mailbox list index couldn't be used to get the wanted + status information. + +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/list/mailbox-list-index-notify.c +M src/lib-storage/list/mailbox-list-index-status.c +M src/lib-storage/list/mailbox-list-index.h +M src/lib-storage/list/mailbox-list-notify-tree.c + +2021-12-06 11:54:16 +0100 Marco Bettini (7751299dee) + + auth: userdb-ldap - Avoid early dereferencing + + userdb_ldap_iterate_callback() is still invoked after dereferencing + auth_request in userdb_ldap_iterate_deinit(). + + Normally this happens only on teardown, but it may happens also in case of + auth disconnecting from auth-worker during iteration. + (which shouldn't happen unless the auth process crashes) + +M src/auth/userdb-ldap.c + +2021-12-09 17:31:04 +0100 Timo Sirainen (2302fcd607) + + var-expand-crypt: Remove dead code + + It's correct that dcrypt library shouldn't be deinitialized at plugin + deinit. + +M src/plugins/var-expand-crypt/var-expand-crypt-plugin.c + +2021-12-03 17:23:35 +0200 Timo Sirainen (82be40f65c) + + login-common: Add more fields to proxy_session_finished + + Added disconnect_side, disconnect_reason, idle_secs, bytes_in, bytes_out. + +M src/login-common/login-proxy.c + +2021-12-03 17:54:37 +0200 Timo Sirainen (da379cfc29) + + login-common: Split off proxy disconnection prefix to + LOGIN_PROXY_KILL_PREFIX + + +M src/login-common/login-proxy.c + +2021-12-03 17:47:50 +0200 Timo Sirainen (d36139fc22) + + login-common: login_proxy_free_*() - Rename reason to log_msg + + This better describes it, since it's the full log message. + +M src/login-common/login-proxy.c + +2021-12-01 14:46:04 +0200 Timo Sirainen (203147d0fc) + + dsync: Fix -I max-size to actually be the max-size rather than min-size + + The -I max-size parameter was supposed to be used to skip mails that are + larger than max-size. Instead, it skipped mails that were smaller. + +M src/doveadm/dsync/dsync-mailbox-import.c + +2021-11-09 13:42:24 +0100 Timo Sirainen (34f2fdeed5) + + man: Add missing parameters to doveadm-sync + + +M doc/man/doveadm-sync.1.in + +2021-11-30 18:02:14 +0200 Timo Sirainen (e6a5cb57d1) + + dsync: Remove -D parameter that disables syncing mailbox renames + + It hasn't been necessary for a long time, and its behavior seems to be + broken. + +M src/doveadm/doveadm-dsync.c +M src/doveadm/dsync/dsync-brain-mailbox-tree.c +M src/doveadm/dsync/dsync-brain-private.h +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-brain.h +M src/doveadm/dsync/dsync-ibc-stream.c + +2021-11-09 13:41:37 +0100 Timo Sirainen (96f9651c98) + + dsync: Add back various missing parameters + + Also add them to the usage string. + + Broken by 5676c510bfa9217df05e9b7cb000ae3554d66f22 + +M src/doveadm/doveadm-dsync.c + +2021-09-22 14:50:50 -0600 Michael M Slusarz (2beae65898) + + fts: Don't overwrite INUSE error if indexing times out + + +M src/plugins/fts/fts-indexer.c +M src/plugins/fts/fts-storage.c + +2021-11-11 12:31:49 +0200 Aki Tuomi (61d9023523) + + lib-storage/index: If mail stream was already opened, do not count it as + slow vsize access + + imapc storage driver will open the mail stream in some circumstances during + search, so do not consider this as slow vsize. + +M src/lib-storage/index/index-mailbox-size.c + +2021-11-16 15:08:47 +0200 Aki Tuomi (73475e1ea6) + + lib-storage: Split off index_mailbox_vsize_finish_bg() + + Simplifies next commit + +M src/lib-storage/index/index-mailbox-size.c + +2021-08-10 12:22:08 +0300 Timo Sirainen (1ee84ba065) + + lib-index: Fix storing cache fields' last_used with 64bit big endian CPUs + + +M src/lib-index/mail-cache-fields.c + +2019-01-17 12:13:38 +0200 Timo Sirainen (616684a8fe) + + maildir: Fix crash at error handling + + At this point dest_mail is already NULL. Mainly could happen when running + out of disk space. + +M src/lib-storage/index/maildir/maildir-save.c + +2021-11-30 09:51:25 +0000 Siavash Tavakoli (ea41bf7db1) + + login-proxy: Don't send proxying start event for reconnects + + Send the event only for the beginning of proxying and add the reconnect + counts as a field for _established and _finished events. + +M src/login-common/login-proxy.c + +2021-11-26 14:45:47 +0100 Marco Bettini (2f7254a6af) + + lib: str_parse_intmax() - Replace signed expression with UNSIGNED_MINUS() + + Found by code analysis tool + +M src/lib/strnum.c + +2021-11-26 15:48:04 +0100 Marco Bettini (5297d4862f) + + lib: switch i_rand_limit() - Replace signed expression with UNSIGNED_MINUS() + + Found by code analysis tool + +M src/lib/rand.c + +2021-11-26 14:15:07 +0100 Marco Bettini (4a3ef239b4) + + lib: buffer_truncate_rshift_bits() - Replace signed expression with an + unsigned equivalent + + Found by code analysis tool + +M src/lib/buffer.c + +2021-11-29 15:05:29 +0100 Marco Bettini (668bdc6838) + + lib: bits_rotXYY() - Replace signed expression with UNSIGNED_MINUS() macro + for unsigned 2's complement + + Found by code analysis tool + +M src/lib/bits.h +M src/lib/test-bits.c + +2021-11-29 15:00:41 +0100 Marco Bettini (bf9c2cb8b5) + + bits_is_power_of_two() Replace signed expression with __builtin_popcountl() + + Found by code analysis tool + +M src/lib/bits.h +M src/lib/test-bits.c + +2021-11-29 14:58:33 +0100 Marco Bettini (f7cbaac8ff) + + lib: test-bits.c - Removing stray spaces at end of lines + + +M src/lib/test-bits.c + +2021-01-15 17:43:19 +0100 Fabrice Bellet (9211e803f2) + + raw-storage: copy the envelope sender instead of referencing it + + +M src/lib-storage/index/raw/raw-storage.c + +2019-10-14 16:43:57 +0300 Timo Sirainen (4a58d467b6) + + lib-fs: Add test-fs utility for testing fs drivers + + It performs random read/write/delete/iter operations. + +M src/util/Makefile.am +A src/util/test-fs.c + +2021-06-18 15:19:48 +0300 Timo Sirainen (051d39ee45) + + replicator: doveadm replicator replicate -f didn't always start full sync + + The full sync happened only if the dsync queue was already full. If it + wasn't, dsync was called too early before user->force_full_sync was set. + +M src/replication/replicator/replicator-brain.c + +2021-07-28 11:52:01 +0300 Timo Sirainen (d0c28bba8b) + + replicator: Move replicator_brain_timeout(() + + +M src/replication/replicator/replicator-brain.c + +2021-04-19 18:48:09 +0200 Timo Sirainen (21880fac08) + + lib-storage: Optimize behavior when building THREAD tree with empty cache + + Although it's possible that Date, Subject or received-date isn't actually + needed for all mails, it's much more efficient behavior to add all of these + to cache at the same time if they're not there already. Otherwise the same + mail could be opened and parsed up to 3 times. + +M src/lib-storage/index/index-thread.c + +2020-04-02 11:06:36 +0300 Timo Sirainen (8abebfe9a4) + + dsync: Improve checking if source and destination are the same location + + Prefer checking using the first -n parameter's namespace. Next try prefix="" + if it's created and last fallback to inbox=yes namespace. + +M src/doveadm/doveadm-dsync.c + +2021-11-22 18:17:52 +0200 Timo Sirainen (27e371af06) + + dsync: Improve bad namespace configuration related error messages + + +M src/doveadm/doveadm-dsync.c + +2021-11-24 16:01:08 +0100 Marco Bettini (5519de5749) + + submission: smtp_server_command_execute() Remove check for null pointer + confusing coverity + + +M src/lib-smtp/smtp-server-command.c + +2021-11-22 16:04:11 +0000 Siavash Tavakoli (c36969fee5) + + imapc: Do not include the root node in list if it's the namespace prefix + + Otherwise namespace prefix is added to the mailbox tree as a separate node. + Fixes duplicated shared namespace root in mailbox list. + +M src/lib-storage/index/imapc/imapc-list.c + +2021-11-23 15:56:45 +0100 Marco Bettini (5cf012bad9) + + acl: acl_mailbox_exists() - Add missing error handling + + Set mailbox storage error to "internal error" when + acl_object_get_my_rights() fails (as per contract). + +M src/plugins/acl/acl-mailbox.c + +2021-11-23 16:03:07 +0100 Marco Bettini (a672d83152) + + lib-storage: fail_mailbox_exists() - Return not found as a success instead + of an error + + GETMETADATA sometimes responds with “NO [SERVERBUG] BUG: Unknown internal + error returned”, instead of “NO Mailbox doesn't exist”, depending on the + actual configuration. This can happen with the shared namespace. + +M src/lib-storage/fail-mailbox.c + +2021-11-23 17:55:43 +0200 Martti Rannanjärvi (13ed86bbf3) + + login-common: Default director_username_hash to %Lu like everywhere else + + This setting has many places where the default is set, and this syncs it + with the others. + +M src/login-common/login-settings.c + +2021-11-12 11:16:47 +0100 Stephan Bosch (d36d2c595a) + + lib-storage: mail-duplicate - Fix segfault occurring when user has no + configured home directory + + Occurred only when a duplicate DB transaction was created. + +M src/lib-storage/mail-duplicate.c + +2021-11-12 10:43:16 +0100 Stephan Bosch (98f709deac) + + lib-storage: mail-duplicate - Fix panic occurring when user has no + configured home directory. + + Panic was: + + Panic: file imem.c: line 65 (i_strconcat): assertion failed: (str1 != NULL) + +M src/lib-storage/mail-duplicate.c + +2021-11-11 09:57:07 +0200 sergey.kitov (476990fffa) + + stats: Whitespace cleanup. + + +M src/stats/stats-metrics.c + +2021-11-09 14:12:18 +0200 sergey.kitov (e41cd77f96) + + doveadm: Fix processing of group-by parameter of doveadm stats add. + + +M src/doveadm/doveadm-stats.c + +2020-09-25 03:48:09 +0200 Stephan Bosch (6341cfc57a) + + lib-smtp: smtp-client-transaction - Always drop MAIL/RCPT state data before + calling callbacks. + + This prevents problems with callbacks destroying the transaction, the + connection, or commands involved in the transaction. This at least fixes a + segmentation fault occurring in the submission service when STARTTLS fails + during login. + +M src/lib-smtp/smtp-client-transaction.c + +2021-11-08 23:29:35 +0100 Stephan Bosch (0037fb7bad) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_rcpt_fail_reply(NULL, reply) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:31:07 +0200 Stephan Bosch (30f0154b78) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_rcpt_abort(NULL) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:29:53 +0200 Stephan Bosch (53b3b9f55b) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_rcpt_replied(NULL) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:27:39 +0200 Stephan Bosch (f4c5ab773a) + + lib-smtp: smtp-client-transaction - Assert that + smtp_client_transaction_rcpt_approved/denied() has non-NULL parameter. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:24:29 +0200 Stephan Bosch (5e68870131) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_rcpt_free(NULL) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:22:45 +0200 Stephan Bosch (da73aac321) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_mail_fail_reply(NULL, reply) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:21:06 +0200 Stephan Bosch (86debae8fe) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_mail_abort(NULL) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:18:56 +0200 Stephan Bosch (8f2751f53d) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_mail_replied(NULL, reply) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:17:57 +0200 Stephan Bosch (02079622d1) + + lib-smtp: smtp-client-transaction - Make + smtp_client_transaction_mail_free(NULL) a no-op. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 02:45:27 +0200 Stephan Bosch (c588b55541) + + lib-smtp: smtp-client-command - Drop callback before call in + smtp_client_command_input_reply(). + + +M src/lib-smtp/smtp-client-command.c + +2020-09-25 02:38:54 +0200 Stephan Bosch (34e5a418c1) + + lib-smtp: smtp-client-command - Make smtp_client_command_fail_reply(NULL, + reply) a no-op. + + +M src/lib-smtp/smtp-client-command.c + +2020-09-25 02:33:33 +0200 Stephan Bosch (ed211d21b0) + + lib-smtp: smtp-client-command - Make smtp_client_command_abort(NULL) a + no-op. + + +M src/lib-smtp/smtp-client-command.c + +2020-09-25 03:00:31 +0200 Stephan Bosch (15c98d994b) + + lib-smtp: Reformat smtp-client-transaction.c. + + +M src/lib-smtp/smtp-client-transaction.c + +2020-09-25 03:14:16 +0200 Stephan Bosch (ec3cdb2168) + + lib-smtp: Reformat smtp-client-command.c. + + +M src/lib-smtp/smtp-client-command.c + +2021-10-28 09:19:37 +0200 Marco Bettini (1863b1c535) + + lib-fts: Don't index inline base64 encoded content + + +M src/lib-fts/fts-tokenizer-generic.c +M src/lib-fts/test-fts-tokenizer.c + +2021-11-14 23:27:00 +0100 Stephan Bosch (771ebaf961) + + lib-smtp: smtp-server-command - Emit smtp_server_command_started event a + little later. + + This way cmd_*args fields are available for the event. + +M src/lib-smtp/smtp-server-command.c + +2021-10-27 00:48:28 +0200 Stephan Bosch (6687627b15) + + lib-smtp: smtp-server-command - Add cmd_args and cmd_human_args fields. + + This mirrors the identically named fields for the imap service. For SMTP, + though, cmd_human_args == cmd_args. + +M src/lib-smtp/smtp-server-command.c + +2021-07-19 11:53:41 +0200 Stephan Bosch (f0e2299322) + + lib-http: http-client-connection - Fix crash in + http_client_connection_server_close(). + + The conn->peer member is only not NULL when the connection is associated + with a peer object. If it is not, http_client_connection_server_close() will + crash. Fixed by doing the peer->client operations only when there is an + associated peer. + +M src/lib-http/http-client-connection.c + +2020-06-27 17:55:58 +0200 Stephan Bosch (9032716e00) + + lib-http: Reformat http-client-connection.c. + + +M src/lib-http/http-client-connection.c + +2021-10-29 11:42:40 +0300 sergey.kitov (f572de72f4) + + lib: Add unit tests for named events only optimization. + + +M src/lib/event-filter-private.h +M src/lib/event-filter.c +M src/lib/test-event-filter.c + +2021-10-29 14:06:39 +0300 sergey.kitov (5a69a67fb8) + + lib: Fix event filtering for unnamed events with optional event name + + For example event filter "event=ev_name OR field1=value1" wouldn't + previously match if the event didn't have any name, even if it did have + field1=value1. + +M src/lib/event-filter-parser.y +M src/lib/event-filter.c + +2021-10-22 12:09:24 +0300 sergey.kitov (f01aec1f96) + + lib-master: Whitespace cleanup. + + +M src/lib-master/master-service.c + +2021-11-09 14:37:07 +0200 Aki Tuomi (f083562f92) + + auth: passdb-cache - Preserve cached fields when verifying password with + worker + + +M src/auth/passdb-cache.c + +2021-11-05 17:11:49 +0100 Stephan Bosch (533ef6c62d) + + lib-smtp: smtp-server-command - Hold a command reference while sending + replies. + + Fixes segfault at smtp-server-reply.c:652. + +M src/lib-smtp/smtp-server-command.c + +2021-11-05 16:53:48 +0100 Stephan Bosch (2275fc4d51) + + lib-smtp: smtp-server-command - Split off + smtp_server_command_send_more_replies(). + + +M src/lib-smtp/smtp-server-command.c + +2021-11-05 16:46:15 +0100 Stephan Bosch (9ae95cb884) + + lib-smtp: smtp-server-command - Split off + smtp_server_command_send_replies(). + + +M src/lib-smtp/smtp-server-command.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h + +2021-11-08 14:36:57 +0200 sergey.kitov (083570cb73) + + plugins/fts: Fix memory leak when searching mail in virtual folder with fts. + + +M src/plugins/fts/fts-storage.c + +2021-11-08 14:04:07 +0200 Aki Tuomi (5afea22757) + + configure: Fix version macros to work with devel version + + +M configure.ac + +2021-11-08 15:24:30 +0200 Aki Tuomi (318f566fc4) + + SECURITY.md: Add initial security policy + + +A SECURITY.md + +2021-10-26 16:59:29 +0300 Timo Sirainen (e188435026) + + lib-fts: Fix address tokenizer to handle large input properly + + Previously it could have used excessive amounts of memory if the input + didn't contain separator characters. + + The fix changes a bit how the address-tokenizer works: Previously large + email addresses were saved as truncated tokens. Now they're skipped entirely + by the address tokenizer. Similarly when searching long email addresses + they're no longer searched as truncated tokens, but instead simply fed to + the parent tokenizer which (likely) searches them in smaller pieces. + + Note that this also sometimes changes the order in which tokens are + returned, e.g. "foo", "example", "foo@example.com", "com" instead of + returning "com" before the email address. This isn't ideal, but fixing it + seems annoyingly complicated and practically it doesn't matter right now. + +M src/lib-fts/fts-tokenizer-address.c +M src/lib-fts/test-fts-tokenizer.c + +2021-10-26 16:34:25 +0300 Timo Sirainen (2af8437d1d) + + lib-fts: Implement support for parent tokenizer "streaming" + + By default parent tokenizer is further tokenizing the token strings returned + by child tokenizer. When streaming is enabled, the parent tokenizers are + instead tokenizing a stream of data sent by the child tokenizer. This + effectively makes the parent tokenizer return the same tokens as if the + child tokenizer didn't exist (assuming child tokenizer feeds the parent all + the same input). + + Arguably this should be the only way tokenizers work, but at least for now + lets keep both ways. + +M src/lib-fts/fts-tokenizer-private.h +M src/lib-fts/fts-tokenizer.c + +2021-10-26 12:33:50 +0300 Timo Sirainen (782d806db2) + + lib-fts: fts-tokenizer - Add comments explaning how it works + + +M src/lib-fts/fts-tokenizer.c + +2021-10-26 11:52:22 +0300 Timo Sirainen (2e91a13fe9) + + lib-fts: test-fts-tokenizer - Add more uniqueness to the long email address + + This helps at least with debugging problems. + +M src/lib-fts/test-fts-tokenizer.c + +2021-09-14 18:21:09 +0200 Timo Sirainen (31c24137c2) + + lib: DOVECOT_PREREQ() - Add micro version + + Nowadays APIs can change between micro versions as well. + +M src/lib/macros.h + +2021-09-14 18:23:41 +0200 Timo Sirainen (cb5968f451) + + lib: DOVECOT_PREREQ() - Remove surrounding if checks + + The DOVECOT_VERSION_* macros are expected to always exist. + +M src/lib/macros.h + +2021-09-14 18:21:03 +0200 Timo Sirainen (d199125cc5) + + configure: Add DOVECOT_VERSION_MICRO + + +M configure.ac + +2021-11-02 16:06:55 +0200 Timo Sirainen (e95f985635) + + lib: Fix building with --disable-asserts + + The #endif location was wrong. + +M src/lib/macros.h + +2021-01-27 02:20:53 +0100 Stephan Bosch (17efe7a404) + + submission-login: Implicitly login using EXTERNAL mechanism upon MAIL if + enabled. + + This is a workaround for TLS clients that present a valid client + certificate, yet don't authenticate explicitly. This is enabled by setting: + + submission_client_workarounds = implicit-auth-external + +M src/submission-login/client-authenticate.c +M src/submission-login/client-authenticate.h +M src/submission-login/client.c +M src/submission-login/submission-login-settings.c +M src/submission-login/submission-login-settings.h +M src/submission/main.c +M src/submission/submission-client.c +M src/submission/submission-client.h +M src/submission/submission-settings.c + +2021-10-14 12:47:23 +0200 Stephan Bosch (1236352801) + + submission-login: client-authenticate - Split off + cmd_auth_set_master_data_prefix(). + + +M src/submission-login/client-authenticate.c + +2021-01-27 13:51:03 +0100 Stephan Bosch (14b6f813e0) + + login-common: sasl-server - Add support for implicit login. + + +M src/login-common/client-common-auth.c +M src/login-common/sasl-server.c +M src/login-common/sasl-server.h + +2021-01-27 13:43:23 +0100 Stephan Bosch (d4321dd910) + + login-common: sasl-server - Turn private argument of + sasl_server_auth_begin() into flag. + + +M src/login-common/client-common-auth.c +M src/login-common/client-common.h +M src/login-common/sasl-server.c +M src/login-common/sasl-server.h + +2021-01-27 13:39:23 +0100 Stephan Bosch (d5588935bf) + + lib-master: master-auth - Add support for MAIL_AUTH_REQUEST_FLAG_IMPLICIT + flag. + + It signals that this login is implicit; no command reply is expected. This + is going to be used by the Submission service to implicitly login a user + using the EXTERNAL SASL mechanism when the first MAIL command is issued. In + that case sending a reply for the implicit AUTH command would break the + protocol and this new flag is used to signal the post-login submission + service to not send an initial reply. + +M src/lib-master/master-auth.h + +2021-01-27 13:40:43 +0100 Stephan Bosch (a0eeeb6c76) + + lib-smtp: smtp-server - Add support for suppressing the inital greeting + reply. + + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server.c +M src/lib-smtp/smtp-server.h + +2021-01-27 02:22:10 +0100 Stephan Bosch (eef32e87e4) + + lib-smtp: smtp-server - Make default command functions public. + + +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server.h + +2021-01-27 02:21:50 +0100 Stephan Bosch (6b380d6072) + + lib-smtp: smtp-server-command - Allow overriding commands. + + +M src/lib-smtp/smtp-server-command.c +M src/lib-smtp/smtp-server.h + +2021-10-30 00:43:55 +0200 Stephan Bosch (73b1ed4e82) + + submission-login: client - Explicitly set SMTP server command and auth line + limits. + + This way, it will always use the same limits as all other login services. + +M src/submission-login/client.c + +2021-10-29 20:41:42 +0200 Stephan Bosch (056aeb0748) + + lib-smtp: smtp-command-parser - Make parser suitable for input stream with + small buffer. + + +M src/lib-smtp/smtp-command-parser.c +M src/lib-smtp/test-smtp-server-errors.c + +2021-10-29 23:44:01 +0200 Stephan Bosch (d982aaadf1) + + lib-smtp: smtp-command - Use size_t for command line limits. + + +M src/lib-smtp/smtp-command-parser.c +M src/lib-smtp/smtp-command.h + +2021-10-29 19:37:16 +0200 Stephan Bosch (12eb20fc0d) + + lib-smtp: test-smtp-server-errors - Add tests for very long AUTH response + lines. + + +M src/lib-smtp/test-smtp-server-errors.c + +2021-10-29 19:36:18 +0200 Stephan Bosch (eb22a35feb) + + lib-smtp: test-smtp-command-parser - Add test for very long AUTH response + line. + + +M src/lib-smtp/test-smtp-command-parser.c + +2021-10-29 23:52:05 +0200 Stephan Bosch (e0fa1375e2) + + lib-smtp: Reformat smtp-command-parser.c. + + +M src/lib-smtp/smtp-command-parser.c + +2021-10-29 23:47:57 +0200 Stephan Bosch (f47cc80a24) + + lib-smtp: Reformat smtp-command-parser.h. + + +M src/lib-smtp/smtp-command-parser.h + +2021-11-01 08:33:49 -0400 Timo Sirainen (6fff8d5819) + + master: Use MASTER_SERVICE_FLAG_DISABLE_SSL_SET + + This prevents startup failures if ssl_ca has a large number of certificates. + + Broken by 36ff43f1a9aff8594d08f791e77ea13390fd569f + +M src/master/main.c + +2021-11-01 08:33:14 -0400 Timo Sirainen (ca2237e067) + + lib-master: Add MASTER_SERVICE_FLAG_DISABLE_SSL_SET + + +M src/lib-master/master-service-settings.c +M src/lib-master/master-service.h + +2021-10-27 12:06:10 +0200 Timo Sirainen (7fc901f370) + + lib-ssl-iostream: Fix assert-crash when OpenSSL returns syscall error + without errno + + Incomplete fix in f41874b3dec541478a85275698a91f089f537df2 + + Fixes: Panic: file istream-openssl.c: line 51 (i_stream_ssl_read_real): + assertion failed: (errno != 0) + +M src/lib-ssl-iostream/iostream-openssl.c + +2021-10-14 18:31:19 +0300 Timo Sirainen (84d3bc8e21) + + lib-storage: Improve mailbox_vfuncs.search_next_update_seq() comment + + +M src/lib-storage/mail-storage-private.h + +2019-08-08 15:35:03 -0600 Michael M Slusarz (d1e1e346a8) + + example-config: Remove outdated object-storage conf.d file + + +D doc/example-config/conf.d/11-object-storage.conf + +2021-10-28 17:07:39 +0200 Timo Sirainen (0407978a8f) + + dsync: Add back missing -T parameter + + Broken by 5676c510bfa9217df05e9b7cb000ae3554d66f22 + +M src/doveadm/doveadm-dsync.c + +2021-09-16 11:24:31 +0300 sergey.kitov (9705b81fb5) + + fts: Keep track of every backend mailbox fts index status for virtual + folders. + + +M src/plugins/fts/fts-search.c +M src/plugins/fts/fts-storage.c +M src/plugins/fts/fts-storage.h + +2021-10-22 12:07:17 +0300 sergey.kitov (392d79bbd2) + + fts: Whitespace cleanup. + + +M src/plugins/fts/fts-storage.c + +2021-10-14 17:33:30 +0300 Timo Sirainen (356b36fc52) + + lib-storage: Move search matching into + mailbox_vfuncs.search_next_match_mail() + + +M src/lib-storage/fail-mailbox.c +M src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c +M src/lib-storage/index/dbox-multi/mdbox-storage.c +M src/lib-storage/index/dbox-single/sdbox-storage.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/index-search.c +M src/lib-storage/index/index-storage.h +M src/lib-storage/index/maildir/maildir-storage.c +M src/lib-storage/index/mbox/mbox-storage.c +M src/lib-storage/index/pop3c/pop3c-storage.c +M src/lib-storage/index/raw/raw-storage.c +M src/lib-storage/mail-storage-private.h +M src/plugins/virtual/virtual-storage.c + +2021-01-08 11:21:20 +0200 Timo Sirainen (547c07bdd3) + + lib: Use data stack frame with IO switch and destroy callbacks + + +M src/lib/ioloop.c + +2021-01-08 11:28:26 +0200 Timo Sirainen (0a9123d94c) + + lib: Use data stack frame with IO context activate/deactive callbacks + + These were running outside the regular ioloop data stack frames, so if the + callback used any data stack it kept increasing memory usage. + + This fixes excessive memory usage with old_stats plugin when used with + long-running imap sessions. The memory got filled with UPDATE-SESSION + commands. + +M src/lib/ioloop.c + +2021-09-29 00:04:29 +0300 Timo Sirainen (2cea75b7f5) + + lib-storage: When search parses message headers, deinitialize the parsing + properly + + index_mail_parse_header() was being called only for the actual headers. This + prevented it from being called with hdr=NULL to indicate that the parsing is + finished and should be deinitialized. Move the index_mail_parse_header() to + be called earlier so it's called also with hdr=NULL. + + Not deinitilizing the parsing could have caused assert-crashes later on in + some situations. + + Fixes: Panic: file index-mail-headers.c: line 667 + (index_mail_get_raw_headers): assertion failed: + (mail->mail.mail.lookup_abort >= MAIL_LOOKUP_ABORT_NOT_IN_CACHE) Panic: file + ../../../src/lib/array.h: line 244 (array_idx_i): assertion failed: (idx < + array->buffer->used / array->element_size) Panic: file index-mail.c: line + 1203 (index_mail_parse_body_finish): assertion failed: (!success) + +M src/lib-storage/index/index-search.c + +2021-10-21 15:45:56 +0200 Marco Bettini (be55b9a4e0) + + doveadm: Route help/usage messages on stderr rather than stdout. + + +M src/doveadm/doveadm.c + +2021-09-30 16:19:58 +0100 Siavash Tavakoli (dbf7ed69c3) + + login-common: Add proxying events + + - proxy_session_started: Emitted before connecting to remote + - proxy_session_established: Emitted after connection to remote is + established and user is successfully logged in to the backend. + - proxy_session_finished: Emitted when proxying has ended. Either + successfully or with error. + +M src/login-common/client-common-auth.c +M src/login-common/login-proxy.c + +2021-09-30 12:49:31 +0100 Siavash Tavakoli (32e57666dc) + + login-common: Change login proxy message to include IP address + + Will be in format " ()". Host part is optional and not added if + proxy target is an IP address. + +M src/login-common/client-common-auth.c + +2021-10-05 11:33:06 +0100 Siavash Tavakoli (313b96cd9a) + + login-proxy: Add source_port to proxy event after connection is established + + +M src/login-common/login-proxy.c + +2021-10-05 15:17:50 +0100 Siavash Tavakoli (ac4089115b) + + login-common: Add more fields to login proxy event + + Adds + - source_ip + - dest_ip + - dest_port + - dest_host + - master_user + +M src/login-common/login-proxy.c + +2021-10-07 22:52:47 +0100 Siavash Tavakoli (574ad02a47) + + login-common: Start proxying after client fields are set + + Allows adding more event fields in login_proxy_new(). + +M src/login-common/client-common-auth.c + +2021-09-30 12:48:09 +0100 Siavash Tavakoli (e202252702) + + login-proxy: Add login_proxy_get_ip_str() + + Returns proxy IP address as string. + +M src/login-common/login-proxy.c +M src/login-common/login-proxy.h + +2021-10-07 10:29:04 +0100 Siavash Tavakoli (9ed1cdecee) + + client-common: Add service field to client event + + +M src/login-common/client-common.c + +2021-10-13 14:49:43 +0300 Marco Bettini (351b424a37) + + imap: list_send_status() - Fixes LIST-EXTENDED doesn't return STATUS for all + folders + + Sending LIST .. RETURN (SUBSCRIBED STATUS (...)) did not return STATUS for + folders that are not subscribed when they have a child folder that is + subscribed as mandated by IMAP RFC + +M src/imap/cmd-list.c + +2021-10-13 11:45:05 +0300 Timo Sirainen (b3f32368aa) + + lib-index: Add mail_index_alloc_cache_find() + + +M src/lib-index/mail-index-alloc-cache.c +M src/lib-index/mail-index-alloc-cache.h + +2021-10-07 18:11:00 +0300 Timo Sirainen (55338455ae) + + maildir: Fix crash when closing a mailbox that isn't open + + This could have happened at least with virtual plugin. + +M src/lib-storage/index/maildir/maildir-storage.c + +2021-10-08 16:32:09 +0300 Timo Sirainen (2555d374c0) + + master: test-auth-client - Check that authorization ID is as expected + + +M src/master/test-auth-client.c + +2021-10-07 20:18:21 +0300 Timo Sirainen (b314a81a69) + + master: test-auth-client - Fix authenid check to be assert + + It can never be NULL at this point. + +M src/master/test-auth-client.c + +2021-10-07 19:59:52 +0300 Timo Sirainen (859529c802) + + lib-dict: dict-lua - Throw Lua error if dict key is invalid or username is + missing + + This prevents assert-crashes in the C code. + +M src/lib-dict/dict-iter-lua.c +M src/lib-dict/dict-lua.c +M src/lib-dict/dict-lua.h +M src/lib-dict/dict-txn-lua.c + +2021-10-07 19:54:41 +0300 Timo Sirainen (e26cebc652) + + lib-dict: dict_lookup_async() - Add missing assert to check for key prefix + and username + + +M src/lib-dict/dict.c + +2021-10-07 19:42:41 +0300 Timo Sirainen (5ed33ba11b) + + lib-master: Prevent read buffer overflow with invalid haproxy header size + + This could have happened only for connections from haproxy_trusted_networks, + so it's unlikely to cause any real security issues. + +M src/lib-master/master-service-haproxy.c + +2021-10-07 19:36:17 +0300 Timo Sirainen (1ed470aa2d) + + lib-dcrypt: dcrypt_openssl_decrypt_point_password_v1() - Fix crash if pbkdf2 + generation fails + + +M src/lib-dcrypt/dcrypt-openssl.c + +2021-10-06 15:38:55 +0300 Timo Sirainen (1e12cf4be0) + + imap: Fix handling client initialization error + + It should send "OK Logged in" + BYE, not PREAUTH. + + Broken by 714ff4342e39e309ff184905cd2f714def6177a3 + +M src/imap/main.c + +2021-10-08 16:02:04 +0300 Timo Sirainen (5a26f6160b) + + imap: Move client_add_input() content to calling functions + + +M src/imap/main.c + +2021-10-08 15:57:50 +0300 Timo Sirainen (8f5d8d9e13) + + imap: Move IMAPLOGINTAG environment handling + + It can only happen with stdio clients when they don't have CLIENT_INPUT, so + it makes more sense to exist in the calling function. + +M src/imap/main.c + +2021-10-06 15:43:09 +0300 Timo Sirainen (29471bf743) + + imap-login: proxy: Don't forward untagged BYE responses to the client + + It will just cause confusion, especially when connections are retried. It + could end up looking like: + + x login user pass + * BYE Internal error occurred. Refer to server log for more information. + * BYE Internal error occurred. Refer to server log for more information. + * BYE Internal error occurred. Refer to server log for more information. + * BYE Internal error occurred. Refer to server log for more information. x + NO [UNAVAILABLE] Account is temporarily unavailable. + +M src/imap-login/imap-proxy.c + +2021-10-08 15:53:21 +0300 Timo Sirainen (f4da884f67) + + lib-storage: mail_storage_service_lookup() - Fix memory leak when returning + -2 + + This was also visible as event leaks. + +M src/lib-storage/mail-storage-service.c + +2021-09-28 20:46:54 +0300 Timo Sirainen (f29786350e) + + lib-index: Fix potential crash with debug logging when looking up cache + + +M src/lib-index/mail-cache-lookup.c + +2021-09-28 20:45:47 +0300 Timo Sirainen (a016ac6a3e) + + lib-index: mail_cache_lookup_iter_next() - Add a warning comment about + re-reading fields + + +M src/lib-index/mail-cache-private.h + +2021-10-07 15:52:28 +0200 Marco Bettini (08656f3aad) + + mail-crypt: mail_crypt_load_global_private_key() - Drop unnecessary NULL + check + + +M src/plugins/mail-crypt/mail-crypt-global-key.c + +2021-09-28 18:13:12 +0300 Timo Sirainen (b4217b8d36) + + lib, global: i_stream_create_chain() - Add max_buffer_size + + This makes sure that the istream size can't grow too large and waste memory. + + Previously the istream max_buffer_size was dynamically changed to be the + smallest seen max_buffer_size in chained istreams. This mostly worked, but + sometimes the istream-chain's max_buffer_size was requested before even the + first istream was added to it. + + Having an explicit max_buffer_size avoids all the problems of it being + dynamic, and there's not really any need for it anyway. + +M src/imap/cmd-append.c +M src/lib-http/test-http-client-errors.c +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-storage/index/pop3c/pop3c-client.c +M src/lib/istream-chain.c +M src/lib/istream-chain.h +M src/lib/test-istream-chain.c + +2021-10-07 14:52:12 +0300 Timo Sirainen (2aa531b4a4) + + virtual: Fix assert-crash when backend mbox mailbox is deleted while virtual + mailbox is open + + The code wrongly thought that metadata lookup couldn't fail because it was + already successfully looked up. But the backend storage could still try to + refresh the mailbox to verify whether it still exists or not, and fail if it + was deleted. + + This seems to have affected only the mbox mailbox format. + + Broken by 710346bcb884b464c8ed128870fdc1999c13dfd3 + +M src/plugins/virtual/virtual-sync.c + +2021-10-05 02:03:00 +0300 Timo Sirainen (5050000f5d) + + lib: istream-concat - Add a comment about explicit snapshot function + + +M src/lib/istream-concat.c + +2021-10-05 01:39:50 +0300 Timo Sirainen (e830aca4ef) + + lib: test-istream-concat - Unref child istreams immediately + + This doesn't currently make a difference, since istream-concat keeps them + internally referenced. In case this changes and snapshot handling isn't + fixed similarly to istream-chain, the unit test should now fail. + +M src/lib/test-istream-concat.c + +2021-10-04 18:25:40 +0300 Timo Sirainen (9507dcba9f) + + lib: istream-concat - Fix snapshot handling when combining two istreams + + Snapshotting wasn't handled correctly when two (or more) istreams' contents + were combined into the same buffer. + +M src/lib/istream-concat.c +M src/lib/test-istream-concat.c + +2021-10-05 00:55:57 +0300 Timo Sirainen (4614c27f68) + + lib: istream-chain - Optimize snapshot handling + + +M src/lib/istream-chain.c + +2021-10-05 01:32:22 +0300 Timo Sirainen (539a052672) + + lib: istream-chain - Fix snapshot handling when link istream is destroyed + + +M src/lib/istream-chain.c +M src/lib/istream-private.h +M src/lib/istream.c +M src/lib/test-istream-chain.c + +2021-10-04 18:17:49 +0300 Timo Sirainen (504c0e6424) + + lib: istream-chain - Fix snapshot handling when combining two istreams + + Snapshotting wasn't handled correctly when two (or more) istreams' contents + were combined into the same buffer. + +M src/lib/istream-chain.c +M src/lib/test-istream-chain.c + +2021-10-05 01:00:38 +0300 Timo Sirainen (39642d6b49) + + lib: Add i_stream_memarea_detach() + + +M src/lib/istream-private.h +M src/lib/istream.c + +2021-10-04 17:41:27 +0300 Timo Sirainen (67324622b6) + + lib: test-istream-chain - Use more unique strings for testing + + DEBUG checks don't work well if the input repeats the same character. + +M src/lib/test-istream-chain.c + +2019-09-15 00:08:57 +0300 Timo Sirainen (43d7f354c4) + + lib: istream-seekable - Fix crash after write to temp file failed + + Fixes: Panic: file istream-seekable.c: line 230 (read_from_buffer): + assertion failed: (*ret_r > 0) + +M src/lib/istream-seekable.c + +2019-09-15 00:06:58 +0300 Timo Sirainen (66fc9ffd4c) + + lib: istream-seekable - Don't double-close temp file fd on errors + + Closing the fd_input stream already auto-closes the fd. + +M src/lib/istream-seekable.c + +2019-09-14 23:53:35 +0300 Timo Sirainen (eb15b02121) + + lib: istream-seekable - Fix crash if writing to temp file fails + + +M src/lib/istream-seekable.c +M src/lib/test-istream-seekable.c + +2021-09-29 13:13:53 +0300 Timo Sirainen (7f752d77be) + + lib: i_stream_try_alloc() - Add sanity check asserts + + +M src/lib/istream.c + +2021-10-06 17:37:40 +0300 Timo Sirainen (baf3e985c0) + + lib-imap-client: test-imapc-client - Increase connect timeout for most tests + + The 500ms timeout could have been too short when running with valgrind on an + overloaded system. Increase it to 5 seconds, but keep 500ms for the tests + that expect a timeout. + +M src/lib-imap-client/test-imapc-client.c + +2021-10-06 05:03:08 -0400 Marco Bettini (313ce3e709) + + lib-master: master_login_auth_callback() - Add assert to guard for both + errormsg and auth_args being NULL + + +M src/lib-master/master-login.c + +2021-10-07 03:55:59 +0300 Timo Sirainen (e7754572e6) + + auth: db-passwd-file - Fix using paths with %% escaped characters but no + %variables + + full_key might not have been NULL, causing var_expand() to read past the + array and possibly crash. + +M src/auth/db-passwd-file.c + +2021-10-07 03:46:29 +0300 Timo Sirainen (687bc05ad0) + + lib: t_get_bytes_available() - Move code inside DEBUG to avoid dead code + warning + + +M src/lib/data-stack.c + +2021-10-07 03:44:46 +0300 Timo Sirainen (6e02a7ba64) + + lib-index: mail_index_sync_init_expunge_handlers() - Simplify and remove + dead code + + +M src/lib-index/mail-index-sync-ext.c + +2021-10-07 03:37:29 +0300 Timo Sirainen (1bf116c7a6) + + lib-index: test-mail-index-write - Fix initializing map.hdr_copy_buf + + +M src/lib-index/test-mail-index-write.c + +2021-10-07 03:29:09 +0300 Timo Sirainen (a08c2213af) + + lib-settings: test-settings-parser - Check settings_parser_check() return + value + + +M src/lib-settings/test-settings-parser.c + +2021-10-07 03:28:56 +0300 Timo Sirainen (a3b12700a6) + + auth: Make sure auth_request_import() doesn't unexpectedly fail + + +M src/auth/auth-master-connection.c + +2021-10-07 03:10:28 +0300 Timo Sirainen (4327b55f45) + + lib: Change i_unreached() to be a function + + This allows overriding the function in a Coverity model, so it can + understand that i_unreached() is intended to be unreachable code. + +M src/lib/failures.c +M src/lib/failures.h +M src/lib/macros.h + +2021-10-07 02:32:26 +0300 Timo Sirainen (44bd159679) + + lib: base64 - Add asserts to check max_line_len is in valid range + + +M src/lib/base64.c + +2021-10-04 13:32:51 +0200 Timo Sirainen (1f0fad9044) + + ipc: Disable connecting to stats + + This avoids reconnect errors if stats process crashes. + +M src/ipc/main.c + +2021-10-01 01:44:35 +0300 Timo Sirainen (dec257fb78) + + master: Use relative path for stats_writer_socket_path for chrooted services + + This allows login process to reconnect to stats-writer if it gets + disconnected. + +M src/master/service-process.c + +2021-10-01 01:42:43 +0300 Timo Sirainen (f08703dae8) + + stats: Add login/stats-writer socket + + +M src/stats/stats-settings.c + +2021-10-04 02:58:15 +0200 Stephan Bosch (53b018722b) + + lmtp: lmtp-proxy - Use the per-recipient session ID for the "Saved" message. + + +M src/lmtp/lmtp-proxy.c + +2021-10-04 02:57:25 +0200 Stephan Bosch (0daefe8937) + + lmtp: Move session_id field to generic recipient struct. + + +M src/lmtp/lmtp-commands.c +M src/lmtp/lmtp-local.c +M src/lmtp/lmtp-recipient.c +M src/lmtp/lmtp-recipient.h + +2021-10-02 00:21:40 +0200 Stephan Bosch (47c7166b91) + + lmtp: lmtp-proxy - Forward session ID towards backend. + + +M src/lmtp/lmtp-proxy.c + +2021-10-02 00:21:06 +0200 Stephan Bosch (e67d8cdb88) + + lmtp: lmtp-local - Always add RCPT index to session ID for delivery. + + Even when it is 1. + +M src/lmtp/lmtp-local.c + +2021-10-02 00:36:09 +0200 Stephan Bosch (c8423c354b) + + lib-smtp: smtp-server-transaction - Base transaction ID on connection + session ID. + + Composed as ":". + +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-transaction.c + +2021-10-02 00:32:05 +0200 Stephan Bosch (e6451151f5) + + lib-smtp: smtp-server-connection - Manage session ID for the connection. + + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h + +2021-10-02 00:29:29 +0200 Stephan Bosch (8fb86c24be) + + lib-smtp: smtp-server-cmd-xclient - Parse XCLIENT SESSION field. + + +M src/lib-smtp/smtp-server-cmd-xclient.c +M src/lib-smtp/smtp-server-reply.c +M src/submission-login/client.c + +2021-10-02 00:16:22 +0200 Stephan Bosch (8c6d07276b) + + lib-smtp: smtp-client-connection - Send new SESSION field with XCLIENT + command. + + +M src/lib-smtp/smtp-client-connection.c + +2021-10-04 02:02:21 +0200 Stephan Bosch (2d4587d13a) + + lib-smtp: smtp-client - Use smtp_proxy_data_merge() to copy proxy data in + smtp_client_init(). + + +M src/lib-smtp/smtp-client.c + +2021-10-02 00:15:07 +0200 Stephan Bosch (b1497466f2) + + lib-smtp: smtp-common - Add SESSION field to proxy data. + + +M src/lib-smtp/smtp-common.c +M src/lib-smtp/smtp-common.h + +2021-10-02 00:25:50 +0200 Stephan Bosch (66d9b71ad4) + + lib: connection - Add debug message for when property label (peer address) + changes. + + +M src/lib/connection.c + +2021-10-02 00:26:28 +0200 Stephan Bosch (4a84440f53) + + lib: connection - Make connection_update_properties() public. + + +M src/lib/connection.c +M src/lib/connection.h + +2021-10-02 00:24:35 +0200 Stephan Bosch (44819f897c) + + lib: connection - Drop useless newlines. + + +M src/lib/connection.c + +2019-02-21 18:50:10 +0200 Aki Tuomi (1b13ee113b) + + lib-program-client: test-program-client-local - Use dd instead of head + + `head -c n` is only guaranteed to print n bytes, but it may consume more. + FreeBSD's implementation of head(1) uses buffered stdio, which did just + that. + + `dd` consumes exactly the specified number of bytes. + +M src/lib-program-client/test-program-client-local.c + +2021-08-10 13:38:39 +0200 Timo Sirainen (1489e6378c) + + login-proxy: Fix potential memory leak if backend login fails + + It also needs an abnormal way of destroying the client for the leak to + happen. For example if the login process is being killed. + +M src/login-common/client-common.c + +2021-04-19 17:36:02 +0200 Stephan Bosch (350600f984) + + lib-test: fuzzer - Disable error handling for output stream towards program. + + Fixes: + + Panic: output stream is missing error handling + +M src/lib-test/fuzzer.c + +2021-04-19 17:34:58 +0200 Stephan Bosch (b41e7198ad) + + lib-test: fuzzer - Provide names for fuzzer streams. + + +M src/lib-test/fuzzer.c + +2021-04-18 12:33:01 +0200 Stephan Bosch (860e5e3a83) + + lib-smtp: smtp-server-cmd-helo - Fix crash occurring upon pipelined EHLO + with invalid domain. + + Failed to check for NULL in domain value for a pipelined EHLO/HELO command. + +M src/lib-smtp/smtp-server-cmd-helo.c + +2021-10-06 13:20:12 +0300 Timo Sirainen (2e06ce6c98) + + lib: Fix data_stack_get_alloc_size() and data_stack_get_used_size() + + It only worked correctly if data stack hadn't been grown. This resulted in + wrong numbers in the data_stack_grow event. + +M src/lib/data-stack.c + +2021-10-01 15:08:45 +0300 Timo Sirainen (bdf4474ed8) + + virtual: Fix leaking mailboxes if virtual mailbox can't be opened + + Fixes also a crash at deinit: Panic: file mail-user.c: line 232 + (mail_user_deinit): assertion failed: ((*user)->refcount == 1) + +M src/plugins/virtual/virtual-storage.c + +2021-10-04 17:25:05 +0300 Timo Sirainen (79ebaf7b14) + + mdbox: Avoid calling container_of() with a NULL pointer + + +M src/lib-storage/index/dbox-multi/mdbox-save.c + +2021-10-04 15:20:17 +0300 Timo Sirainen (6275be1981) + + sdbox: Avoid calling container_of() with a NULL pointer + + +M src/lib-storage/index/dbox-single/sdbox-save.c + +2021-10-04 14:42:54 +0300 Timo Sirainen (a037ede37f) + + lib: buffer_free() - Check for buf==NULL before using container_of() + + Helps with static analyzer complaints. + +M src/lib/buffer.c + +2021-10-04 14:42:14 +0300 Timo Sirainen (ecaaa728c7) + + lib: lib-event - Assert-crash if attempting to use NULL passthrough event + + Fixes also complaints from static analyzer. + +M src/lib/lib-event.c + +2021-10-04 14:22:22 +0300 Timo Sirainen (bb5048cda0) + + lib: container_of() - Don't check for NULL after all + + Adding the explicit NULL checks for container_of() caused caused static + analyzers to think that NULL could be returned at any time. This caused + unnecessary warnings in various places. + + Reverts b178d0792b6335277f7fa831fd7e5403105abd04 + +M src/lib/macros.h + +2021-10-04 14:35:03 +0300 Timo Sirainen (5de8349891) + + lib: macros.h - Fix #endif position + + +M src/lib/macros.h + +2021-09-24 16:36:41 +0300 Timo Sirainen (6baff5b2d4) + + lib-index: Add more mail_index_ext_name_is_valid() asserts + + +M src/lib-index/mail-index-map.c +M src/lib-index/mail-index-sync-ext.c + +2021-09-24 16:35:39 +0300 Timo Sirainen (f81779845a) + + lib-index: Handle invalid extension header names without assert-crashing + + Fixes: Panic: mail_index_ext_register(...): Invalid name + +M src/lib-index/mail-index-map.c + +2021-09-24 16:27:40 +0300 Timo Sirainen (05e570be12) + + lib-index: Add and use mail_index_ext_name_is_valid() + + Use it in mail_index_ext_register() instead of the more relaxed + str_sanitize() check. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index.c + +2021-09-24 16:32:26 +0300 Timo Sirainen (4896364107) + + lib-index: Remove unused mail_index_sync_ext_init() + + It doesn't look like this was ever used for anything. The initial commit + used only mail_index_sync_ext_init_new(). + +M src/lib-index/mail-index-sync-ext.c +M src/lib-index/mail-index-sync-private.h + +2021-07-29 11:37:23 +0300 Timo Sirainen (d7dc02bbb0) + + zlib: Handle empty zlib_save_level the same as if it doesn't exist + + +M src/plugins/zlib/zlib-plugin.c + +2021-07-29 11:29:37 +0300 Timo Sirainen (42457ff2eb) + + zlib: Fix crash when zlib_save_level is set, but zlib_save is unset + + +M src/plugins/zlib/zlib-plugin.c + +2021-10-04 11:14:04 +0100 Siavash Tavakoli (4cd6999dd5) + + driver-pgsql: Fix error leak + + +M src/lib-sql/driver-pgsql.c + +2021-10-04 12:37:11 +0200 Timo Sirainen (1e56bbb41b) + + lib-compression: ostream-zlib - Fix non-blocking gz header write + + Broken by 373dc6a93da1f6a0ad0c80dbb72566c2b3a295f2 + +M src/lib-compression/ostream-zlib.c + +2021-08-03 20:38:13 +0300 Timo Sirainen (1efd4a1765) + + lib-storage: mailbox_get_expunge*() - Fix assert-crash on index corruption + + This happened in the very unlikely situation that indexes became corrupted + between two mail_transaction_log_view_set() calls. + + Fixes: Panic: file mailbox-get.c: line 112 (mailbox_get_expunges_init): + assertion failed: (ret != 0) + +M src/lib-storage/mailbox-get.c + +2021-10-01 15:21:38 +0300 Timo Sirainen (088783cdaa) + + lib: str_hash() - Ignore integer wrapping with ubsan + + ATTR_NO_SANITIZE_INTEGER was already set for other hash functions, but + forgotten for this one. + + Fixes e.g.: Error: hash.c:529:16: runtime error: unsigned integer overflow: + 4294967200 + 115 cannot be represented in type ‘unsigned int’ + +M src/lib/hash.c + +2021-09-28 00:51:03 +0200 Stephan Bosch (3c05dcfa58) + + lib: ostream-wrapper - Make sure o_stream_finish() has stream_errno != 0 + when -1 is to be returned. + + Fixes: + + Panic: file ostream.c: line 209 (o_stream_flush): assertion failed: + (stream->stream_errno != 0) + +M src/lib/ostream-wrapper.c + +2021-10-01 10:42:16 +0100 Siavash Tavakoli (a1729a72e8) + + driver-cassandra: Fix prepared statement pool leak + + +M src/lib-sql/driver-cassandra.c + +2021-09-30 18:42:08 +0300 sergey.kitov (ebd5223c8d) + + stats: Remove metric from stats dump, when removing dynamically. + + +M src/stats/stats-metrics.c + +2020-09-23 23:35:53 +0200 Stephan Bosch (d16a69f7e2) + + lib-ssl-iostream: istream-openssl - Remove assert() in i_stream_ssl_read(). + + +M src/lib-ssl-iostream/istream-openssl.c + +2020-09-23 23:35:30 +0200 Stephan Bosch (50b7231aab) + + lib-ssl-iostream: iostream-openssl - Allow plain_input buffer to remain + filled in openssl_iostream_bio_input(). + + +M src/lib-ssl-iostream/iostream-openssl.c + +2020-09-23 22:02:41 +0200 Stephan Bosch (b4d477a50b) + + lib-ssl-iostream: iostream-openssl - Use o_stream_uncork_flush() to uncork + the plain output. + + This flushes the stream after uncorking it, fixing I/O hang with nested SSL + layers. + +M src/lib-ssl-iostream/iostream-openssl.c + +2021-09-30 00:17:47 +0200 Stephan Bosch (f42c0637ac) + + lib-ssl-iostream: iostream-openssl - Return immediately from + openssl_iostream_bio_output() upon error. + + +M src/lib-ssl-iostream/iostream-openssl.c + +2020-09-23 23:58:12 +0200 Stephan Bosch (3200480ecf) + + lib-ssl-iostream: iostream-openssl - Move error handling out of + openssl_iostream_bio_output(). + + Makes the next commit clearer. + +M src/lib-ssl-iostream/iostream-openssl.c + +2021-04-16 13:55:06 +0200 Stephan Bosch (aa8a39557b) + + lib-ssl-iostream: test-iostream-ssl - Make finishing the ssl streams more + robust. + + Fixes: + + Panic: file ostream.c: line 59 (o_stream_close_full): assertion failed: + (stream->real_stream->error_handling_disabled) + +M src/lib-ssl-iostream/test-iostream-ssl.c + +2021-04-16 18:18:07 +0200 Stephan Bosch (2816a2525b) + + lib-ssl-iostream: test-iostream-ssl - Properly mark client endpoints. + + +M src/lib-ssl-iostream/test-iostream-ssl.c + +2021-04-16 18:21:01 +0200 Stephan Bosch (7738cb723b) + + lib-ssl-iostream: test-iostream-ssl - Move small_packets_flush_callback(). + + +M src/lib-ssl-iostream/test-iostream-ssl.c + +2021-04-16 18:19:55 +0200 Stephan Bosch (3e53f67a65) + + lib-ssl-iostream: test-iostream-ssl - Move bufsize_flush_callback(). + + +M src/lib-ssl-iostream/test-iostream-ssl.c + +2021-04-16 14:52:34 +0200 Stephan Bosch (0f4a532bd1) + + lib-ssl-iostream: ostream-openssl - Call SSL_shutdown() once stream is + finished and buffer is empty. + + +M src/lib-ssl-iostream/ostream-openssl.c + +2021-04-16 12:31:13 +0200 Stephan Bosch (46970690e9) + + lib: istream - Remove try_alloc_limit. + + +M src/lib/istream-private.h +M src/lib/istream.c + +2021-04-16 12:27:48 +0200 Stephan Bosch (b44c5504ff) + + lib-ssl-iostream - iostream-openssl - Use i_stream_read_limited(). + + +M src/lib-ssl-iostream/iostream-openssl.c + +2021-04-16 12:25:43 +0200 Stephan Bosch (377f1cbe88) + + lib: istream - Add i_stream_read_limited(). + + +M src/lib/istream-private.h +M src/lib/istream.c +M src/lib/istream.h + +2020-09-27 15:19:05 +0200 Stephan Bosch (00df102e56) + + lib-ssl-iostream: istream-openssl - Simplify i_stream_ssl_read(). + + Avoid using a stack buffer. Just fill the stream to the maximum buffer size. + +M src/lib-ssl-iostream/istream-openssl.c + +2021-04-16 18:08:50 +0200 Stephan Bosch (b4a2da442d) + + lib-ssl-iostream: iostream-openssl - Add OPENSSL_IOSTREAM_SYNC_TYPE_NONE. + + This is useful for calling openssl_iostream_handle_error() while avoiding + processing more I/O. + +M src/lib-ssl-iostream/iostream-openssl.c +M src/lib-ssl-iostream/iostream-openssl.h + +2021-09-24 19:16:43 +0300 Timo Sirainen (8a9d1aa7b6) + + lib-ssl-iostream: Fix error handling if parent iostream fails + + Expand out and remove openssl_iostream_more(). It could have returned errors + to two different locations depending on whether the failure came from SSL + handshake or parent iostream. + +M src/lib-ssl-iostream/iostream-openssl.c +M src/lib-ssl-iostream/iostream-openssl.h +M src/lib-ssl-iostream/istream-openssl.c +M src/lib-ssl-iostream/ostream-openssl.c + +2021-09-24 19:15:22 +0300 Timo Sirainen (75a6da0a1e) + + lib-ssl-iostream: ostream-ssl - Add ssl_io helper variable + + +M src/lib-ssl-iostream/ostream-openssl.c + +2021-09-24 18:59:29 +0300 Timo Sirainen (6289334552) + + lib: o_stream_copy_error_from_parent() - Assert-crash if source stream_errno + is 0 + + This can help debug situations where error is missing. + +M src/lib/ostream.c + +2021-09-24 18:59:21 +0300 Timo Sirainen (8f22f0ab6e) + + global: Call o_stream_copy_error_from_parent() only on errors + + +M src/lib-http/http-transfer-chunked.c +M src/lib-mail/ostream-dot.c + +2021-09-24 18:58:02 +0300 Timo Sirainen (373dc6a93d) + + lib-compression: ostream-zlib - Fix sending partial gz header to parent + ostream + + This practically wouldn't happen. + +M src/lib-compression/ostream-zlib.c + +2021-09-30 15:38:23 +0200 Timo Sirainen (1545fadb3d) + + lib-http: test-http-client-errors - Revert previous retry changes + + The real bug is found now, so the previous fix attempt isn't useful. Reverts + ed1264368a5435c3080871380156978a8951fe26 + +M src/lib-http/test-http-client-errors.c + +2021-09-30 15:32:24 +0200 Timo Sirainen (37f4f27114) + + lib-http: test-http-client-errors - Reset USR1 notification signal between + tests + + The "connection refused" test already set the signal as being received, + which caused the "connection refused backoff" test to randomly fail since it + thought the signal was immediately received. + +M src/lib-http/test-http-client-errors.c + +2021-09-25 00:48:12 +0200 Stephan Bosch (ddb173aa3d) + + lib: istream-concat - Prevent inheriting SIZE_MAX max buffer size from + parent streams. + + Only when all parent streams have SIZE_MAX for max buffer size, the concat + stream will follow suit. + +M src/lib/istream-concat.c + +2021-09-27 20:35:19 +0300 Timo Sirainen (f5c1baf2cd) + + lib-storage: Add mailbox_list.disable_rebuild_on_corruption + + If set, don't try to rebuild the mailbox list index even if corruption is + detected. + +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/mailbox-list-private.h + +2021-09-24 17:59:06 +0300 Timo Sirainen (462d9b6ea6) + + lib-dcrypt: Fix istream-decrypt snapshotting + + This is mostly copy&pasted from istream-header-filter. + +M src/lib-dcrypt/istream-decrypt.c +M src/lib-dcrypt/test-stream.c + +2021-09-23 18:02:17 -0600 Michael M Slusarz (9bf48f34bf) + + lib-storage: hide mail_cache_min_mail_count setting + + +M src/lib-storage/mail-storage-settings.c + +2021-09-26 01:16:53 +0300 Timo Sirainen (ccb0579b3b) + + master: Avoid leaking master client fds to forked processes + + +M src/master/master-client.c + +2021-09-29 14:58:22 +0300 sergey.kitov (231105a825) + + stats: Improve error message for doveadm stats add. + + +M src/stats/client-reader.c + +2021-09-29 14:57:34 +0300 sergey.kitov (22bc379024) + + stats: Check if metric already exists when adding dynamically. + + +M src/stats/stats-metrics.c + +2021-09-28 15:35:05 +0300 Timo Sirainen (1ad80be9a6) + + driver-pglsqlpool: Implement sql_get_flags() reliably + + Try to use one of the already connected databases. If none were found, + create a new database. + +M src/lib-sql/driver-sqlpool.c + +2021-09-28 15:32:56 +0300 Timo Sirainen (a55f18c67f) + + driver-pgsql: Implement sql_get_flags() reliably + + Some of the flags aren't known until server is connected to, so wait for the + connect to finish if necessary before returning the flags. + +M src/lib-sql/driver-pgsql.c + +2021-09-28 15:33:47 +0300 Timo Sirainen (a90663e588) + + driver-sqlpool: Implement sql_wait() + + +M src/lib-sql/driver-sqlpool.c + +2021-09-27 11:59:09 +0100 Siavash Tavakoli (8146312f9c) + + driver-cassandra: Add wait() implementation + + +M src/lib-sql/driver-cassandra.c + +2021-09-27 11:58:21 +0100 Siavash Tavakoli (8981a97398) + + driver-pgsql: Add wait() implementation + + +M src/lib-sql/driver-pgsql.c + +2021-09-27 11:48:34 +0100 Siavash Tavakoli (beca893733) + + dict-sql: Add "sql_dict_wait()" implementation + + lib-sql now has sql_wait(). + +M src/lib-dict-backend/dict-sql.c + +2021-09-27 11:46:07 +0100 Siavash Tavakoli (3e717dd730) + + lib-sql: Add "wait" vfunc + + To be used in backends that support async operations. On deinit dicts should + wait for results and then exit. + +M src/lib-sql/sql-api-private.h +M src/lib-sql/sql-api.c +M src/lib-sql/sql-api.h + +2021-09-27 19:43:54 +0100 Siavash Tavakoli (d5bf78e2da) + + driver-pgsql: Keep a list of pending query results + + To be used in wait() to determine if there are pending operations. + +M src/lib-sql/driver-pgsql.c + +2021-09-22 20:57:06 +0300 Timo Sirainen (a660f544ea) + + dict: Wait for all dicts to finish pending operations at shutdown + + This also changes the dict process to exit cleanly instead of early via + lib_exit(). + +M src/dict/dict-init-cache.c +M src/dict/dict-init-cache.h +M src/dict/main.c + +2019-07-11 12:05:37 +0300 Timo Sirainen (d571a13586) + + dict: Unref dict connection immediately when connection is destroyed + + The delayed unrefing is needed when calling from dict command callbacks to + avoid calling dict_deinit() too early. But the connection's destroy() vfunc + can't be called directly from dict command callbacks, so there's no need to + add further delays. Especially when this happens at deinit where there is no + possibility of calling the delayed callback anymore. + +M src/dict/dict-connection.c + +2021-09-27 11:42:07 +0100 Siavash Tavakoli (60f20b00b9) + + driver-pgsql: Fix escaped blob prefix + + Escaped strings must be prefixed with double backslash. + +M src/lib-sql/driver-pgsql.c + +2021-09-27 11:35:38 +0100 Siavash Tavakoli (103a99d531) + + driver-pgsql: Fix assert-crash when using binary fields + + array_idx_modifiable() changed behavior in + 1d4e5de8414ed93d1c810b30a91ad83d6d954861 and doesn't allocate space anymore. + + Fixes: Panic: file array.c: line 10 (array_idx_modifiable_i): assertion + failed: (idx < array->buffer->used / array->element_size) + +M src/lib-sql/driver-pgsql.c + +2021-09-29 18:04:37 +0200 Timo Sirainen (f318731eac) + + doveadm mail batch: Fix run() return value on errors + + The function always returned 0, even when there was an error. This + practically doesn't fix anything, but makes it work the way it was intended. + It also makes scan-build happier. + + Broken by fd4360e30b695e596a5081a6080152188a12852a + +M src/doveadm/doveadm-mail-batch.c + +2021-09-22 19:34:32 +0300 Timo Sirainen (d10bc56592) + + mdbox: Add assert to help static analyzers + + mdbox_sync_begin() can return 0 with sync_ctx=NULL, but not with the + parameters given here. + +M src/lib-storage/index/dbox-multi/mdbox-save.c + +2021-09-22 19:02:24 +0300 Timo Sirainen (67c96d89f3) + + lib-smtp: smtp_client_transaction_get_state_name() - Fix return value + + Only the "new" state was returned correctly, while everything else was + wrong. This didn't really cause problems, because it was used only by + imaptest. + +M src/lib-smtp/smtp-client-transaction.c +M src/lib-smtp/smtp-client-transaction.h + +2021-09-22 18:46:39 +0300 Timo Sirainen (37ab021b41) + + lib: Ignore COMPILE_ERROR_IF_TRUE() with --enable-static-checker + + +M src/lib/macros.h + +2021-09-28 01:24:24 +0300 Timo Sirainen (b178d0792b) + + lib: container_of() - Always return NULL if input pointer is NULL + + +M src/lib/macros.h + +2021-09-22 18:40:11 +0300 Timo Sirainen (71d3f9a4c0) + + lib: container_of() - Avoid uintptr_t + + Using uintptr_t confused Coverity, but char* works fine. + +M src/lib/macros.h + +2021-09-29 00:21:17 +0300 Timo Sirainen (e47c4a3ff7) + + indexer: Abort requests if indexer-worker disconnects unexpectedly + + +M src/indexer/worker-connection.c + +2021-04-19 21:43:17 +0300 Timo Sirainen (1e14dd0f49) + + lib-storage: Add reason_code=mail:header_fields + + +M src/lib-storage/index/index-mail-headers.c + +2021-04-19 21:38:35 +0300 Timo Sirainen (034597d2fe) + + lib-storage: Add more specific mail:* reason_codes in when prefetching + + Added: + * mail:attachment_keywords + * mail:date + * mail:snippet + * mail:mime_parts + * mail:imap_envelope + * mail:imap_bodystructure + +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2021-03-11 23:38:01 +0200 Timo Sirainen (88c2ee58f1) + + fts: Add reason_code=fts:index and fts:lookup + + Note that fts:index won't be used for email opening events, because the + emails are already opened by the indexer precache searching code due to + wanted_fields. + +M src/plugins/fts/fts-search.c +M src/plugins/fts/fts-storage.c + +2021-09-09 16:45:23 +0300 Timo Sirainen (1279e1bd00) + + lib-storage: Add reason_code=mailbox:* + + Added: + * mailbox:create + * mailbox:update + * mailbox:delete + * mailbox:rename + * mailbox:subscribe + * mailbox:unsubscribe + * mailbox:attributes_changed + +M src/lib-storage/mail-storage.c + +2021-03-17 15:15:00 +0200 Timo Sirainen (87cd6570a1) + + lib-storage: Add reason_code=mailbox:search + + +M src/lib-storage/index/index-search.c + +2021-03-17 14:49:24 +0200 Timo Sirainen (858da66efb) + + lib-storage: Add reason_code=mailbox:thread + + This is split into a few different locations in the code. + +M src/lib-storage/index/index-thread-finish.c +M src/lib-storage/index/index-thread.c + +2021-03-17 17:48:57 +0200 Timo Sirainen (eedf4a3f22) + + lib-storage: Add reason_code=mailbox:vsize* + + * mailbox:vsize - mailbox vsize is asked + * mailbox:vsize_update - mailbox vsize is updated (append/expunge) + +M src/lib-storage/index/index-mailbox-size.c + +2021-03-17 17:48:33 +0200 Timo Sirainen (d4b3fcee59) + + lib-storage: Add reason_code=mailbox:sort + + +M src/lib-storage/index/index-sort.c + +2021-03-11 19:43:22 +0200 Timo Sirainen (ce517f8323) + + lib-storage: Add reason_code=mail:* + + * mail:virtual_size + * mail:physical_size + * mail:snippet + * mail:prefetch + * mail:mime_parts + * mail:date + * mail:received_date + * mail:save_date + * mail:storage_id + * mail:pop3_uidl + * mail:pop3_order + * mail:guid + * mail:refcount + * mail:refcount_id + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail.c + +2021-03-11 19:07:10 +0200 Timo Sirainen (962efef5f7) + + lib-storage: Remove mailbox_set_reason() + + Event reason_codes should be used instead. Keep the "Mailbox opened" debug + message mainly because it's often used in CI tests. + +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.c +M src/lib-storage/mail-storage.h + +2021-03-11 19:06:00 +0200 Timo Sirainen (f1db5fbfb3) + + global: Remove mailbox_set_reason() calls + + These ones that are left are all rather unnecessary. + +M src/lib-imap-storage/imap-metadata.c +M src/lib-imap-storage/imap-msgpart-url.c +M src/lib-imap-urlauth/imap-urlauth-backend.c +M src/lib-lda/mail-deliver.c +M src/lib-storage/mail-storage.c +M src/lmtp/lmtp-local.c +M src/plugins/quota/quota-status.c +M src/plugins/virtual/virtual-storage.c + +2021-03-17 17:40:46 +0200 Timo Sirainen (d2ab26be60) + + pop3: Add reason_code=pop3:cmd_ to events + + +M src/pop3/pop3-client.c + +2021-03-11 19:04:36 +0200 Timo Sirainen (641d0bd3bd) + + pop3: Replace mailbox_set_reason() with reason_code=pop3:initialize + + +M src/pop3/main.c +M src/pop3/pop3-client.c + +2021-03-11 17:29:59 +0200 Timo Sirainen (bf1b124e0d) + + virtual: Replace mailbox_set_reason() with reason_code=virtual:config_read + + +M src/plugins/virtual/virtual-config.c + +2021-03-11 17:27:54 +0200 Timo Sirainen (d31e44e66c) + + trash: Replace mailbox_set_reason() with reason_code=trash:clean + + +M src/plugins/trash/trash-plugin.c + +2021-03-09 16:49:12 +0200 Timo Sirainen (459f9eeeac) + + quota: Replace mailbox_set_reason() with reason_code=quota:recalculate and + quota:count + + +M src/plugins/quota/quota-count.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota-maildir.c + +2021-03-11 17:22:31 +0200 Timo Sirainen (b0d8db1bb3) + + pop3-migration: Replace mailbox_set_reason() with + reason_code=pop3_migration:uidl_sync + + +M src/plugins/pop3-migration/pop3-migration-plugin.c + +2021-03-11 17:03:49 +0200 Timo Sirainen (d2af1066c4) + + lazy_expunge: Replace mailbox_set_reason() with + reason_code=lazy_expunge:expunge + + +M src/plugins/lazy-expunge/lazy-expunge-plugin.c + +2021-03-17 18:23:11 +0200 Timo Sirainen (bc85909b45) + + lazy-expunge: Split off lazy_expunge_mail_expunge_move() + + +M src/plugins/lazy-expunge/lazy-expunge-plugin.c + +2021-03-11 16:56:32 +0200 Timo Sirainen (2ec30d083b) + + lib-storage: Replace mailbox_set_reason() with + reason_code=storage:autoexpunge and storage:mailbox_list_rebuild + + +M src/lib-storage/list/mail-storage-list-index-rebuild.c +M src/lib-storage/mail-autoexpunge.c + +2021-03-11 16:53:35 +0200 Timo Sirainen (a20d06d4b3) + + mdbox: Replace mailbox_set_reason() with reason_code=mdbox:rebuild + + +M src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c + +2021-03-16 19:02:06 +0200 Timo Sirainen (1a30dc1b43) + + mdbox: Split off mdbox_storage_rebuild_scan_prepare() + + +M src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c + +2021-03-11 15:46:11 +0200 Timo Sirainen (e3dc046996) + + indexer: Replace mailbox_set_reason() with reason_code=indexer:index_mailbox + + +M src/indexer/master-connection.c + +2021-03-17 17:28:03 +0200 Timo Sirainen (bb1df67719) + + imap: Add reason_code=imap:fetch_* + + The main reason for these is to allow understanding why mails are being + opened. The possibilities: + + * imap:fetch_body + * imap:fetch_header + * imap:fetch_header_fields + * imap:fetch_bodystructure + * imap:fetch_size + +M src/imap/cmd-fetch.c +M src/imap/imap-fetch-body.c +M src/imap/imap-fetch.h + +2021-03-11 15:44:47 +0200 Timo Sirainen (b41063291e) + + imap: Remove mailbox_set_reason() calls + + They are now unnecessary because of the new reason_code field. + +M src/imap/cmd-create.c +M src/imap/cmd-delete.c +M src/imap/cmd-getmetadata.c +M src/imap/cmd-notify.c +M src/imap/cmd-rename.c +M src/imap/cmd-resetkey.c +M src/imap/cmd-select.c +M src/imap/cmd-setmetadata.c +M src/imap/cmd-subscribe.c +M src/imap/imap-commands-util.c +M src/imap/imap-notify.c +M src/imap/imap-state.c +M src/imap/imap-status.c + +2021-03-11 15:44:10 +0200 Timo Sirainen (61685f7b7a) + + imap: Add reason_code=imap:unhibernate for events during unhibernation. + + +M src/imap/imap-master-client.c + +2021-03-11 15:39:09 +0200 Timo Sirainen (4eb305cccc) + + imap: Add reason_code=imap:notify_update for events during NOTIFY updates + + +M src/imap/imap-notify.c + +2021-03-09 16:37:18 +0200 Timo Sirainen (ad5ef653eb) + + imap: Add and use client_command_context.global_event + + This way all the (potentially large) IMAP command parameters won't be + included in all the events. This change might be reverted in the future if + the performance worries go away. + + The global event also contains reason_code=imap:cmd_ field. + +M src/imap/cmd-append.c +M src/imap/cmd-create.c +M src/imap/cmd-delete.c +M src/imap/cmd-getmetadata.c +M src/imap/cmd-rename.c +M src/imap/cmd-resetkey.c +M src/imap/cmd-select.c +M src/imap/cmd-setmetadata.c +M src/imap/cmd-status.c +M src/imap/cmd-subscribe.c +M src/imap/imap-client.c +M src/imap/imap-client.h +M src/imap/imap-commands-util.c +M src/imap/imap-commands.c + +2021-03-11 15:26:56 +0200 Timo Sirainen (cfc7b74425) + + doveadm: Remove mailbox_set_reason() calls + + They are now unnecessary because of the new reason_code field. + +M src/doveadm/doveadm-mail-copymove.c +M src/doveadm/doveadm-mail-import.c +M src/doveadm/doveadm-mail-index.c +M src/doveadm/doveadm-mail-iter.c +M src/doveadm/doveadm-mail-mailbox-metadata.c +M src/doveadm/doveadm-mail-mailbox-status.c +M src/doveadm/doveadm-mail-mailbox.c +M src/doveadm/doveadm-mail-save.c +M src/doveadm/doveadm-mail.c + +2021-03-11 15:26:09 +0200 Timo Sirainen (fd4360e30b) + + doveadm: Add reason_code=doveadm:cmd_ to events + + +M src/doveadm/doveadm-mail-batch.c +M src/doveadm/doveadm-mail.c + +2021-04-20 00:05:23 +0300 Timo Sirainen (82f0d7bf81) + + dsync: ioloop context shouldn't deactivate after ioloop has run + + Normally that is wanted, but dsync reuses the same ioloop as the parent + doveadm connection, so after the inner io_loop_run() it's still running in + the doveadm connection's io callback. + + Without this all the global events will be popped out, and the following + global event change commit will cause crashes. + +M src/doveadm/doveadm-dsync.c + +2021-04-20 00:28:02 +0300 Timo Sirainen (a9ffa98ac7) + + doveadm copy: Don't permanently activate source user's ioloop + + +M src/doveadm/doveadm-mail-copymove.c + +2021-04-20 00:24:39 +0300 Timo Sirainen (23c1983be1) + + doveadm import: Don't permanently activate source user's ioloop + + After the source user is initialized, the original user's ioloop should be + activated back. + +M src/doveadm/doveadm-mail-import.c + +2021-03-17 18:48:37 +0200 Timo Sirainen (19779828ea) + + submission: Add reason_code=submission:cmd_ + + +M src/submission-login/client.c +M src/submission/main.c + +2021-03-17 18:48:24 +0200 Timo Sirainen (ebd660c594) + + lmtp: Add reason_code=lmtp:cmd_ + + +M src/lmtp/main.c + +2021-03-17 18:44:09 +0200 Timo Sirainen (750f14dae0) + + lib-smtp: Add reason_code=:cmd_* + + This requires caller to set smtp_server_settings.reason_code_module. For now + only cmd_mail, cmd_rcpt and cmd_data are implemented. The other commands are + likely not very useful. + +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/smtp-server-cmd-mail.c +M src/lib-smtp/smtp-server-cmd-rcpt.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server.c +M src/lib-smtp/smtp-server.h + +2021-04-22 20:27:45 +0300 Timo Sirainen (7b6e14ce5e) + + lib-http: http-client-request - Preserve global events' reason_code in + request events + + Since HTTP requests are asynchronous, it's possible that the global events + go away before the HTTP request is finished. This way the reason_code will + be preserved in http_request_finished event. + +M src/lib-http/http-client-request.c + +2021-03-11 17:54:18 +0200 Timo Sirainen (fbcb1dafbf) + + lib: Add event_reason_code() for building reason codes easily + + +M src/lib/lib-event.c +M src/lib/lib-event.h +M src/lib/test-lib-event.c +M src/lib/test-lib.inc + +2021-03-09 16:45:20 +0200 Timo Sirainen (c0a3b73732) + + lib: Add event_reason_begin/end() API + + This can be used to easily add reason_code to all events being emitted + within the begin..end calls. The reasons can also be nested. For example: + + reason = event_reason_begin("reason1"); + // ... reason2 = event_reason_begin("reason2"); + // .. event_reason_end(&reason2); event_reason_end(&reason); + + This results in having reason_code=["reason1", "reason2"] for all events + emitted while reason2 exists. + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-04-21 16:55:57 +0300 Timo Sirainen (2bba7f1f34) + + lib: event_pop_global() - Assert-crash if trying to pop ioloop context's + global root event + + This makes it easier to debug bugs. + +M src/lib/ioloop-private.h +M src/lib/ioloop.c +M src/lib/lib-event.c + +2021-03-11 02:19:37 +0200 Timo Sirainen (c633d08bf2) + + lib: Push/pop global event stack automatically when ioloop contexts are + switched + + +M src/lib/ioloop-private.h +M src/lib/ioloop.c +M src/lib/lib-event.h +M src/lib/test-ioloop.c + +2021-04-21 17:11:54 +0300 Timo Sirainen (75285a3169) + + lib-storage: mail_storage_service_next*() - On failure don't leave user's io + context activated + + +M src/lib-storage/mail-storage-service.c + +2021-03-11 02:18:55 +0200 Timo Sirainen (340e961cfe) + + lib-storage: Remove global event stack tracking + + This will be implemented by ioloop contexts directly in the next commit. + +M src/lib-storage/mail-storage-service.c + +2021-03-09 16:33:15 +0200 Timo Sirainen (c822238604) + + lib: Fix global events to actually work + + Also add comments to clarify how exactly it works. + +M src/lib/event-filter.c +M src/lib/lib-event.c +M src/lib/lib-event.h +M src/lib/test-event-filter.c + +2021-04-20 00:08:57 +0300 Timo Sirainen (16fca42dec) + + lib: event_push_global() - Assert that event is not NULL + + +M src/lib/lib-event.c + +2021-09-09 13:46:24 +0300 Timo Sirainen (e2995d85c2) + + lib-master: Fix sending events recursively + + The event sending itself may recursively trigger more events (e.g. + data_stack_grow). The previous BEGINs must have been flushed by that time or + the recursive events might be pointing to event IDs that haven't even been + sent to the stats process yet. + + Fixes: stats: Error: Client sent invalid input for UPDATE: Unknown event ID + +M src/lib-master/stats-client.c + +2021-03-09 16:29:49 +0200 Timo Sirainen (9d93a24824) + + lib-master, stats: Send global events to stats process + + +M src/lib-master/stats-client.c +M src/lib-master/test-event-stats.c +M src/stats/client-writer.c +M src/stats/test-client-writer.c + +2021-03-19 13:13:45 +0200 Timo Sirainen (0a57bd650e) + + stats: Support group_by for string lists + + +M src/stats/stats-metrics.c + +2021-01-27 13:10:07 +0200 Aki Tuomi (5f8775fc40) + + stats: Support exporting event string lists + + +M src/stats/event-exporter-fmt-json.c +M src/stats/event-exporter-fmt-tab-text.c + +2021-03-19 13:02:54 +0200 Timo Sirainen (775ddf19ed) + + stats: Split off stats_metric_get_sub_metric() + + +M src/stats/stats-metrics.c + +2021-03-19 13:05:35 +0200 Timo Sirainen (a1623b5e44) + + stats: Rename stats_metric_get_sub_metric() to + stats_metric_find_sub_metric() + + +M src/stats/stats-metrics.c + +2021-03-19 12:59:53 +0200 Timo Sirainen (81d50807bf) + + stats: Split off stats_metric_group_by_value_label() + + +M src/stats/stats-metrics.c + +2021-03-19 12:52:13 +0200 Timo Sirainen (add670d598) + + stats: stats_metric_group_by_*() - Add _r suffix to returned value parameter + + +M src/stats/stats-metrics.c + +2020-12-15 09:17:57 +0200 Aki Tuomi (4f752d381c) + + lib: lib-event - Add support for string lists + + Provide API to create string lists. These are particularly useful if you + need to provide list of causes for an event, such as why some mail was + opened. + +M src/lib/Makefile.am +M src/lib/event-filter.c +M src/lib/lib-event.c +M src/lib/lib-event.h +M src/lib/test-event-filter.c +M src/lib/test-event-flatten.c +A src/lib/test-lib-event.c +M src/lib/test-lib.inc +M src/stats/event-exporter-fmt-json.c +M src/stats/event-exporter-fmt-tab-text.c +M src/stats/stats-metrics.c + +2021-08-23 17:21:58 +0300 Timo Sirainen (9a4d33f893) + + lib: test-event-filter - Improve "override parent fields" test + + +M src/lib/test-event-filter.c + +2021-08-23 17:15:47 +0300 Timo Sirainen (e670cb1468) + + lib: test-event-filter - Fix parent/child events to actually be parent/child + + +M src/lib/test-event-filter.c + +2021-03-16 19:22:25 +0200 Timo Sirainen (1411aaf4a4) + + lib: Split off event_import_arg() + + +M src/lib/lib-event.c + +2021-03-16 19:19:43 +0200 Timo Sirainen (bb602382b9) + + lib: Split off event_import_field() + + +M src/lib/lib-event.c + +2021-09-24 18:21:29 +0300 Timo Sirainen (a12796fd66) + + lib-index: Allow ignoring index corruption checks with --enable-devel-checks + + If DEBUG_IGNORE_INDEX_CORRUPTION environment is set, don't check if index + contains internal corruption. This is useful for CI tests that intentionally + test corrupted indexes. + +M src/lib-index/mail-index-sync-update.c + +2021-09-28 00:28:35 +0100 Siavash Tavakoli (c92afe67a1) + + lib-http: http-server: Add request events + + Adds http_server_request_started and http_server_request_finished. + +M src/lib-http/http-server-connection.c +M src/lib-http/http-server-private.h +M src/lib-http/http-server-request.c + +2021-08-26 13:13:55 +0100 Siavash Tavakoli (12229f5e61) + + lib-http: http-server-request - Add request_id and status_code fields to + event + + +M src/lib-http/http-server-request.c +M src/lib-http/http-server-response.c + +2021-09-28 15:35:21 +0300 sergey.kitov (e8d9838485) + + stats: Use duplicated metric settings in stats_metrics_add_dynamic(). + + +M src/stats/stats-metrics.c + +2021-09-15 14:44:42 +0200 Markus Valentin (b04cb5ea03) + + imapc: Add MAIL_STORAGE_CLASS_FLAG_SECONDARY_INDEX storage class flag + + Add SECONDARY_INDEX storage class flag to enable storing shared private + indexes in obox user root bundle. + +M src/lib-storage/index/imapc/imapc-storage.c + +2021-09-24 17:33:38 +0300 Timo Sirainen (e399436c15) + + lib-storage: mail_get_binary_stream() - Add comment about having to unref + returned istream + + +M src/lib-storage/mail-storage.h + +2021-09-22 15:58:55 +0300 Timo Sirainen (1ce928c75f) + + lib: test-cpu-limit - Remove dead code + + No longer needed after 6d902507c24fca4f64e3e9bf7d79ae5a48281cd8 + +M src/lib/test-cpu-limit.c + +2021-09-27 11:49:05 +0300 Timo Sirainen (0a70b02bbb) + + lib: test-strfuncs - Avoid testing p_strndup() with overlong max_chars + parameter + + This ended up in memchr() call with n=SIZE_MAX-1, which sometimes doesn't + work right with old glibc versions. + + Fixes: Panic: Trying to allocate 18446744073709551615 bytes + +M src/lib/test-strfuncs.c + +2021-09-08 10:39:36 +0300 Aki Tuomi (211040d836) + + lib-mail: Add test for empty header value + + +M src/lib-mail/test-message-header-parser.c + +2021-09-02 17:10:11 +0300 Aki Tuomi (d0e0b22b6b) + + lib-mail: Limit header length to 1000 bytes + + +M src/lib-mail/message-header-parser.c +M src/lib-mail/test-message-header-parser.c + +2021-09-02 17:12:55 +0300 Aki Tuomi (44c43133a4) + + lib-mail: If message header has no colon, store it as value only + + If the header is missing :, it is not valid header. Storing it as value only + ensures it will be kept by mbox rewrite, but will not be processed as a + header. + +M src/lib-mail/message-header-parser.c +M src/lib-mail/test-message-header-parser.c +M src/plugins/pop3-migration/pop3-migration-plugin.c + +2021-09-02 16:46:19 +0300 Aki Tuomi (ac65213384) + + lib-mail: test-message-header-parser - Add NAME10, 100, 1000 macros for + testing + + +M src/lib-mail/test-message-header-parser.c + +2021-09-07 14:37:34 +0300 Aki Tuomi (0009fd1edf) + + lib: Add i_memspn() and i_memcspn() + + Binary data safe variants of strspn() and strcspn() + +M src/lib/strfuncs.c +M src/lib/strfuncs.h +M src/lib/test-strfuncs.c + +2021-09-16 13:32:37 +0200 Timo Sirainen (8af2bd8640) + + virtual: Log a debug message why backend mailbox has changed + + +M src/plugins/virtual/virtual-sync.c + +2021-09-24 10:39:43 +0200 Stephan Bosch (801405d49f) + + lib-storage: mail-duplicate - Restructure mail_duplicate_read_db_file() to + make sure fd is closed. + + Found by Coverity. + +M src/lib-storage/mail-duplicate.c + +2021-09-24 10:22:28 +0200 Stephan Bosch (99d129cd50) + + lib-storage: mail-duplicate - Fix segfault occurring upon failure to lock + and open DB file. + + Found by Coverity. + +M src/lib-storage/mail-duplicate.c + +2021-08-18 16:54:00 +0200 Timo Sirainen (26284cf6f7) + + indexer-worker: Fix event leak on error handling + + +M src/indexer/master-connection.c + +2021-07-13 04:15:14 +0200 Stephan Bosch (2d32ee8b54) + + lib-storage: mail-duplicate - Implement separate error code for deadlock. + + +M src/lib-storage/mail-duplicate.c +M src/lib-storage/mail-duplicate.h + +2021-09-16 01:49:57 +0200 Stephan Bosch (dcee43b54c) + + lib-storage: mail-duplicate - Update records from duplicate DB file after + acquirement of per-ID lock. + + The process previously holding the per-ID lock may have updated the DB. + +M src/lib-storage/mail-duplicate.c + +2021-09-17 11:11:21 +0200 Stephan Bosch (a27a97f49d) + + lib-storage: mail-duplicate - Move acquirement of dotlock for DB file into + mail_duplicate_read(). + + +M src/lib-storage/mail-duplicate.c + +2021-09-20 11:58:12 +0200 Stephan Bosch (9cb56c3b28) + + lib-storage: mail-duplicate - Implement per-ID locking. + + +M src/lib-storage/mail-duplicate.c +M src/lib-storage/mail-duplicate.h + +2021-09-17 11:16:39 +0200 Stephan Bosch (9bd8fff3b0) + + lib-storage: mail-duplicate - Allow calling mail_duplicate_read() more than + once in a transaction. + + +M src/lib-storage/mail-duplicate.c + +2021-07-13 23:22:52 +0200 Stephan Bosch (b3d183d81d) + + lib-storage: mail-duplicate - Record an entry for both checked and marked + IDs. + + Still only write the marked IDs to the file. The in-memory record is needed + for the locking introduced in a later commit. + +M src/lib-storage/mail-duplicate.c + +2021-07-13 05:03:02 +0200 Stephan Bosch (711f05f3d1) + + lib-storage: mail-duplicate - Add debug messages for transaction. + + +M src/lib-storage/mail-duplicate.c + +2021-07-13 05:07:39 +0200 Stephan Bosch (4809e7e1cd) + + lib-storage: mail-duplicate - Add debug messages for database. + + +M src/lib-storage/mail-duplicate.c + +2021-07-13 04:40:24 +0200 Stephan Bosch (70af5522c6) + + lib-storage: mail-duplicate - Add event to transaction object. + + +M src/lib-storage/mail-duplicate.c + +2021-07-13 04:53:11 +0200 Stephan Bosch (4fe7f887a6) + + lib-storage: mail-duplicate - Add event to database object. + + +M src/lib-storage/mail-duplicate.c + +2021-06-08 03:51:10 +0200 Stephan Bosch (63553ff976) + + lib-storage: mail-duplicate - Restructure API to make it transaction-based. + + +M src/lib-storage/mail-duplicate.c +M src/lib-storage/mail-duplicate.h + +2021-07-13 04:03:42 +0200 Stephan Bosch (f786488b23) + + lib-storage: mail-duplicate - Change mail_duplicate_check() return type from + bool to enum. + + +M src/lib-storage/mail-duplicate.c +M src/lib-storage/mail-duplicate.h + +2021-09-17 11:04:55 +0200 Stephan Bosch (90400db2d6) + + lib-storage: Reformat mail-duplicate.c. + + +M src/lib-storage/mail-duplicate.c + +2021-08-07 15:43:35 +0200 Stephan Bosch (8bfdede141) + + lib-storage: mail-user - Add mail_user_get_volatile_dir(). + + +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2021-09-20 02:45:23 +0200 Stephan Bosch (4c1cf82d61) + + lib: file-lock - Adjust API to allow EDEADLK to be used by application. + + It always caused a Dovecot panic before when returned from kernel. + +M src/lib/file-lock.c +M src/lib/file-lock.h + +2021-09-19 13:09:29 +0200 Stephan Bosch (083439ed73) + + lib: file-lock - Rework API to make it extensible. + + +M src/doveadm/dsync/dsync-brain.c +M src/lib-dict/dict-file.c +M src/lib-fs/fs-posix.c +M src/lib-index/mail-index-lock.c +M src/lib-index/mail-index-strmap.c +M src/lib-storage/index/dbox-common/dbox-file.c +M src/lib-storage/mail-storage.c +M src/lib-storage/mail-user.c +M src/lib-storage/mailbox-list.c +M src/lib/file-create-locked.c +M src/lib/file-create-locked.h +M src/lib/file-lock.c +M src/lib/file-lock.h +M src/lib/test-file-create-locked.c +M src/plugins/fts-squat/squat-trie.c +M src/plugins/fts-squat/squat-uidlist.c + +2021-09-20 02:39:08 +0200 Stephan Bosch (de5e12a160) + + lib: file-lock - Rename file_{wait,try}_lock_error() to + file_{wait,try}_lock(). + + +M src/lib-dict/dict-file.c +M src/lib-fs/fs-posix.c +M src/lib-index/mail-index-lock.c +M src/lib-index/mail-index-strmap.c +M src/lib-storage/index/dbox-common/dbox-file.c +M src/lib/file-create-locked.c +M src/lib/file-lock.c +M src/lib/file-lock.h +M src/plugins/fts-squat/squat-trie.c +M src/plugins/fts-squat/squat-uidlist.c + +2021-09-20 02:29:55 +0200 Stephan Bosch (13b9181e32) + + lib: file-lock - Remove file_{wait,try}_lock(). + + +M src/lib/file-lock.c +M src/lib/file-lock.h + +2021-09-20 02:26:46 +0200 Stephan Bosch (4dbae0e6c1) + + global: Avoid use of file_{wait,try}_lock(). + + Use the file_{wait,try}_lock_error() variants instead. + +M src/lib-dict/dict-file.c +M src/lib-fs/fs-posix.c +M src/lib-index/mail-index-lock.c +M src/lib-index/mail-index-strmap.c +M src/lib-storage/index/dbox-common/dbox-file.c +M src/plugins/fts-squat/squat-trie.c +M src/plugins/fts-squat/squat-uidlist.c + +2021-09-22 17:36:27 +0300 Timo Sirainen (ed1264368a) + + lib-http: test-http-client-errors - Allow more relaxed timeouts for connect + retry tests + + With max_connect_attempts=3 the connects come at (0ms, 100ms, 300ms). Before + the 3rd attempt a timeout at 250ms must have triggered, so there was only + 50ms time for it to trigger. This wasn't always enough when running with + valgrind on an overloaded system. Solve this by increasing + max_connect_attempts=4 so the 4th attempt comes at 700ms, giving the timeout + 450ms to trigger. + +M src/lib-http/test-http-client-errors.c + +2021-09-22 12:14:08 +0300 Timo Sirainen (4f605823a4) + + lib: Add most data_stack_grow event fields before checking if event is + wanted + + This allows using e.g. "event=data_stack_grow and alloc_size > 32768" as an + event filter. + +M src/lib/data-stack.c + +2021-09-21 18:27:29 +0300 Timo Sirainen (18e1eaf61e) + + config: Add data stack frame + + +M src/config/config-request.c + +2021-09-21 18:26:53 +0300 Timo Sirainen (9055758361) + + doveconf: Avoid unnecessary data stack use when writing output + + +M src/config/doveconf.c + +2021-09-21 18:21:54 +0300 Timo Sirainen (dab478e5f4) + + master: Create each service in its own data stack frame + + +M src/master/service.c + +2021-09-21 17:52:15 +0300 Timo Sirainen (e873c9aeae) + + doveadm: Call each run() in its own data stack frame + + +M src/doveadm/doveadm-mail.c + +2021-09-21 17:14:44 +0300 Timo Sirainen (7ac69350e3) + + dsync: Add data stack frames to mailbox loops + + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2021-09-21 17:10:56 +0300 Timo Sirainen (1b4f8cf6a2) + + dsync: Split off dsync_brain_recv_mailbox_tree_add() + + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2021-09-21 17:50:32 +0300 Timo Sirainen (d83e4f5fd2) + + acl: Code cleanup - Remove pointless while-loop + + +M src/plugins/acl/acl-shared-storage.c + +2021-09-21 17:03:45 +0300 Timo Sirainen (f78c00f1f3) + + acl: acllist rebuild - Move data stack frame to caller's loop + + +M src/plugins/acl/acl-backend-vfile-acllist.c + +2021-09-21 16:14:12 +0300 Timo Sirainen (e05b6df33a) + + acl: Add data stack frame when iterating mailboxes + + Avoids wasting memory when there are a lot of mailboxes. + +M src/plugins/acl/acl-mailbox-list.c + +2021-09-21 17:51:15 +0300 Timo Sirainen (5694b04f70) + + lib-storage: mail_user_unref() - Add data stack frame + + The deinit code paths can sometimes eat up quite a lot of data stack. + +M src/lib-storage/mail-user.c + +2021-09-22 12:49:46 +0300 Timo Sirainen (ef84b4e2f6) + + lib-storage: mailbox_create() - Add data stack frames + + +M src/lib-storage/mail-storage.c + +2021-09-22 12:48:18 +0300 Timo Sirainen (0b1dff0b1d) + + lib-storage: Add data stack frames to [service] user initialization + + Initialization steps can use a lot of data stack, so try to free it at + several checkpoints. + +M src/lib-storage/mail-storage-service.c + +2021-09-21 17:49:34 +0300 Timo Sirainen (1682263f04) + + lib-storage: Add data stack frame when iterating mailboxes to build GUID + cache + + +M src/lib-storage/mailbox-guid-cache.c + +2021-09-21 17:48:33 +0300 Timo Sirainen (8c56e2c025) + + lib-storage: mailbox_verify_*name() - Add data stack frames + + This function can eat up quite a lot of data stack. + +M src/lib-storage/mail-storage.c + +2021-09-21 17:47:41 +0300 Timo Sirainen (4908b7c139) + + lib-storage: str_contains_special_use() - Add data stack frame + + This function is called in a loop by namespace_find_special_use(). + +M src/lib-storage/mail-storage.c + +2021-09-21 16:58:13 +0300 Timo Sirainen (e22519d85d) + + lib-storage: List index rebuild - Add data stack frames + + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2021-09-21 16:57:13 +0300 Timo Sirainen (99b9890db0) + + lib-storage: List index rebuild - Split off + mail_storage_list_index_find_indexed_mailbox() + + +M src/lib-storage/list/mail-storage-list-index-rebuild.c + +2021-09-21 16:37:13 +0300 Timo Sirainen (8b7438a3f9) + + lib-storage: Don't use data stack for mailbox list index header update + + There can be a lot of mailboxes, causing excessive data stack usage. + +M src/lib-storage/list/mailbox-list-index-sync.c + +2021-09-21 16:42:39 +0300 Timo Sirainen (bb75bc110f) + + lib-index: Don't use data stack for building index header update buffer + + The header update can be large (e.g. dovecot.list.index with many mailboxes) + and grow data stack unnecessarily. + +M src/lib-index/mail-index-transaction-export.c + +2021-09-21 17:51:50 +0300 Timo Sirainen (742053d520) + + lib: module_dir_deinit() - Call each deinit() in its own data stack frame + + +M src/lib/module-dir.c + +2021-09-21 16:15:54 +0300 Timo Sirainen (f13526d432) + + lib: test-data-stack - Make sure data stack memory usage doesn't leak + + +M src/lib/test-data-stack.c + +2021-09-21 13:38:27 +0300 Timo Sirainen (6d902507c2) + + lib: test-cpu-limit - Remove checking for CPU usage upper limit + + These tests keep randomly failing on loaded systems. It's more important + anyway to check that the minimum CPU usage is high enough than it is to + check that CPU usage isn't too high. + +M src/lib/test-cpu-limit.c + +2021-09-17 16:11:12 +0300 Timo Sirainen (ba465f3a04) + + lib: Optimize str_tabescape() + + +M src/lib/strescape.c + +2021-09-17 16:10:12 +0300 Timo Sirainen (bcfc14fae3) + + lib: Optimize p_strsplit_tabescaped() + + +M src/lib/strescape.c + +2021-09-17 16:06:17 +0300 Timo Sirainen (5615fa62db) + + lib: Optimize t_strsplit_tabescaped() + + +M src/lib/strescape.c + +2021-09-17 16:04:00 +0300 Timo Sirainen (09b2f400d2) + + lib: Optimize t_strsplit_tabescaped_inplace() + + +M src/lib/strescape.c + +2021-09-17 16:02:10 +0300 Timo Sirainen (a6b1c0114c) + + lib: Optimize t_strdup*() + + Avoid zeroing the allocated data stack memory just before it's going to be + filled with the duplicated string anyway. + +M src/lib/strfuncs.c + +2021-03-12 01:41:35 +0200 Timo Sirainen (6345e8f021) + + lib: Optimize t_str_tabunescape() + + +M src/lib/strescape.c + +2021-03-12 01:38:13 +0200 Timo Sirainen (cd63b1eeea) + + lib: Optimize str_tabunescape() + + +M src/lib/strescape.c + +2021-03-12 01:27:30 +0200 Timo Sirainen (ea636c55e4) + + lib: Optimize str_append_tabescaped() + + Avoid calling strlen() and replace for-loop with strcspn(). + +M src/lib/strescape.c + +2021-03-12 01:23:04 +0200 Timo Sirainen (1abeccbeca) + + lib: Optimize str_append_tabescaped_n() + + +M src/lib/strescape.c +M src/lib/test-strescape.c + +2021-03-12 01:19:38 +0200 Timo Sirainen (de0871dedb) + + lib: Optimize p_strndup() + + +M src/lib/strfuncs.c +M src/lib/test-lib.inc +M src/lib/test-strfuncs.c + +2021-02-11 02:56:11 +0200 Timo Sirainen (7371c1033e) + + lib: Optimize buffer_append() and buffer_append_c() + + +M src/lib/buffer.c + +2021-02-11 02:44:34 +0200 Timo Sirainen (34d72ca7f2) + + lib: buffer_create_dynamic_max() - Fix max_size handling + + Never allocate buffer larger than its max_size, since it's just wasted + memory. Also clarify that the allocation can actually go up to max_size+1 + because of str_c() NUL byte reservation. + +M src/lib/buffer.c +M src/lib/buffer.h + +2021-02-11 02:30:12 +0200 Timo Sirainen (53adac82ea) + + lib: buffer_append_zero() - Avoid unnecessary memset() + + +M src/lib/buffer.c + +2021-02-11 02:21:30 +0200 Timo Sirainen (93499cd0fd) + + lib: buffer - Add writable_size to simplify checking if buffer needs to be + grown + + +M src/lib/buffer.c +M src/lib/buffer.h + +2021-09-15 14:14:47 +0200 Timo Sirainen (4a2d3e3b30) + + lib: buffer - Replace casts with container_of() + + +M src/lib/buffer.c + +2021-08-12 10:02:55 +0300 Aki Tuomi (c513b9a13d) + + lib-storage: Add data stack frame for mailbox_copy and mailbox_move + + +M src/lib-storage/mail-storage.c + +2021-08-12 09:58:57 +0300 Aki Tuomi (d1ef929697) + + lib-storage: Add data stack frame for mailbox_rename + + +M src/lib-storage/mail-storage.c + +2021-08-12 09:58:41 +0300 Aki Tuomi (0e6e64c6c0) + + lib-storage: Add data stack frame for mailbox_delete + + +M src/lib-storage/mail-storage.c + +2021-09-16 19:32:02 +0300 Timo Sirainen (095089cd8f) + + acl: acl_backend_vfile_has_acl() - Simplify code + + +M src/plugins/acl/acl-backend-vfile.c + +2021-09-16 19:13:09 +0300 Timo Sirainen (4f765652f0) + + acl: acl_backend_vfile_has_acl() - Open mailbox to check if it exists + + This is a bit more expensive than the previous behavior, but it's done only + when creating or renaming mailboxes which are pretty rare operations. + + This fixes copying parent ACLs with obox when the parent mailbox doesn't + exist in local metacache. + +M src/plugins/acl/acl-backend-vfile.c +M src/plugins/acl/acl-backend-vfile.h + +2021-09-16 19:26:07 +0300 Timo Sirainen (3533994fd9) + + acl: acl_backend_vfile_has_acl() - Avoid unnecessary local ACL file check + + The local ACL file can't exist if its mailbox doesn't exist. + +M src/plugins/acl/acl-backend-vfile.c + +2021-09-16 19:22:41 +0300 Timo Sirainen (0f8fb686c0) + + acl: acl_backend_vfile_has_acl() - Check first if global ACL exists + + Global ACL can be checked more efficiently. If it exists, there's no need + anymore to access the local mailbox ro ACL files. + +M src/plugins/acl/acl-backend-vfile.c + +2021-09-16 18:05:04 +0300 Timo Sirainen (f63bda4db5) + + acl: Consistently determine whether ACL files are in control or mailbox + directory + + Add mail_storage_get_acl_list_path_type() that is used for it. This fixes + ACL inheritance with obox. + +M src/plugins/acl/acl-backend-vfile-acllist.c +M src/plugins/acl/acl-backend-vfile.c +M src/plugins/acl/acl-backend-vfile.h + +2021-09-06 00:49:06 +0100 Siavash Tavakoli (e1cbc8f64d) + + lib-lua: Add function for restricting global variable definition + + Add "dovecot.restrict_global_variables()" with a boolean argument to + mitigate unintended variable assignments and to prevent unnecessarily + populating global namespace. + + If enabled, variables can only be defined local to the script but global + functions are still allowed. + +M src/lib-lua/dlua-dovecot.c + +2021-09-07 15:03:37 +0100 Siavash Tavakoli (460edc6b64) + + lib-lua: Use rawget to check presence of functions in scripts + + With the restricted global variables in next commit, checking for undeclared + functions results in error. Use rawget to avoid metamethods. + +M src/lib-lua/dlua-script.c + +2021-09-17 12:26:35 +0300 Timo Sirainen (dc21a1d7e8) + + lib-lua: Build test-dict-lua only with Lua 5.3+ + + Fixes building with Lua 5.1 + +M src/lib-lua/Makefile.am + +2021-09-14 10:33:50 +0300 Aki Tuomi (85e65dd58a) + + lib-compression: bench-compress - Ensure we have both istream and ostream + constructor + + After 6e5ae5ef0f0f31acd7bde0db53980a708c81eced we have read-only compression + mechanism, that leads to null pointer crash in bench-compress. + +M src/lib-compression/bench-compression.c + +2021-09-16 20:12:13 +0300 Timo Sirainen (4ee8601abb) + + NEWS: Add news for 2.3.16 + + +M NEWS + +2021-09-10 15:52:43 +0300 Timo Sirainen (9e3df2cddd) + + lib-lua: Add test-dict-lua + + +M src/lib-lua/Makefile.am +A src/lib-lua/test-dict-lua.c + +2021-09-10 15:47:47 +0300 Timo Sirainen (39f2166fac) + + dict-lua: Change dict:lookup() to actually return nil if key isn't found + + It was previously returning an empty table, although the comment said it + should have returned nil. + +M src/lib-dict/dict-lua.c + +2021-09-10 12:49:50 +0300 Timo Sirainen (a564b607de) + + lib-dict: dict-lua - Add set_timestamp() + + +M src/lib-dict/dict-txn-lua.c + +2021-09-01 19:33:49 +0300 Timo Sirainen (53eeb81a6d) + + lib-dict: dict-lua - Add unset() + + +M src/lib-dict/dict-txn-lua.c + +2021-09-07 17:00:07 +0300 Timo Sirainen (3740bc1679) + + indexer: Remove the concept of a "busy" connection + + All the connections are busy, since they are created for a new request and + they are disconnected when the request is done. + +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c +M src/indexer/worker-pool.h + +2021-09-07 16:56:16 +0300 Timo Sirainen (2f8bdc9372) + + indexer: Handle more requests whenever indexer-worker connection closes + + Previously this was done only when worker process sent a "request finished" + notification. Crashing worker processes could have caused the queue to get + stuck until more requests were added to the queue. + +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c +M src/indexer/worker-pool.h + +2021-09-07 16:52:40 +0300 Timo Sirainen (61ca1eb1b8) + + indexer: Disconnect from worker after each request + + service_count won't be tracked correctly otherwise. + +M src/indexer/worker-connection.c + +2021-09-07 15:47:23 +0300 Timo Sirainen (9718957b84) + + indexer: Fix tracking indexer-worker's process_limit + + After recent changes, the process_limit was too often thought to be 1. + +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c + +2021-08-31 12:14:15 +0300 Timo Sirainen (4018f44337) + + indexer: Change status callback to take struct indexer_request parameter + + +M src/indexer/indexer.c +M src/indexer/indexer.h +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h + +2021-08-31 12:12:49 +0300 Timo Sirainen (b1c4f2b882) + + indexer: Don't free worker_connection too early + + There's no need for the status callback anymore to free the connection. It + will be tracked automatically. + +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c +M src/indexer/worker-pool.h + +2021-08-31 12:08:32 +0300 Timo Sirainen (a15eb469aa) + + indexer: Use a separate indexer_queue_callback_t type for indexer-queue + callback + + +M src/indexer/indexer-queue.c +M src/indexer/indexer-queue.h + +2021-09-14 15:33:50 +0300 sergey.kitov (e7a3c48390) + + lib: Remove connect_finished_time field from connection event. + + +M src/lib/connection.c + +2021-09-10 19:00:09 +0300 Timo Sirainen (da3bc6ea23) + + lib: ENUM_NEGATE() - Disable runtime sizeof() check with STATIC_CHECKER + + This is to avoid "Dangerous variable-length array (VLA) declaration" errors + with clang 12 scan-build, which happen because scan-build keeps thinking + that the enums can become larger than 2147483647. + +M src/lib/macros.h + +2021-08-31 15:44:20 +0300 Aki Tuomi (4826b08c47) + + doveadm: Flush data to server client asynchronously + + +M src/doveadm/doveadm-print-server.c + +2021-07-13 13:32:09 +0200 Markus Valentin (d89e8a5c3c) + + virtual: Add storage flag for secondary index + + +M src/plugins/virtual/virtual-storage.c + +2021-07-13 13:28:43 +0200 Markus Valentin (69ddbe6dd0) + + lib-storage: Add storage_class_flag for secondary index + + +M src/lib-storage/mail-storage-private.h + +2021-09-10 06:47:21 +0200 Bernhard M. Wiedemann (00eba31f19) + + man: doveadm director flush - The parameter is -F, not -f + + +M doc/man/doveadm-director.1.in + +2021-09-08 09:53:12 +0300 Aki Tuomi (30eecd1f82) + + doveadm: doveadm-stats - Allocate field_types + + field_types was function local variable that got used outside of function. + Change to use datastack allocation instead to keep it valid after leaving + function. + + Broken in e9a46e3a6df2edd6cb68a8fc04a5e8e4564a9d5e + +M src/doveadm/doveadm-stats.c + +2021-08-31 12:48:38 +0300 Aki Tuomi (601b5465dc) + + lib-storage: Move (un)deleting debug message to mailbox_mark_index_deleted + + +M src/lib-storage/list/mail-storage-list-index-rebuild.c +M src/lib-storage/mail-storage.c + +2021-08-09 11:56:17 +0300 Aki Tuomi (99efbc7f81) + + lib-storage: mailbox-list - Detect duplicate GUIDs + + This is only done for LAYOUT=INDEX. + +M src/lib-storage/list/mailbox-list-index.c + +2021-08-19 17:10:31 +0300 Aki Tuomi (f30403df4b) + + lib-storage: mailbox-list - Add duplicate pool for duplicate detection + + +M src/lib-storage/list/mailbox-list-index.c + +2021-08-16 14:38:47 +0300 Aki Tuomi (196a5ed776) + + lib-storage: maildir - Use mail_storage_index_list_rebuild + + +M src/lib-storage/index/maildir/maildir-storage.c +M src/lib-storage/index/maildir/maildir-sync.c + +2021-08-20 11:43:27 +0300 Aki Tuomi (18afa46644) + + lib-storage: maildir - Allow creating existing folder when rebuilding list + index + + +M src/lib-storage/index/maildir/maildir-storage.c + +2021-08-09 14:23:13 +0300 Aki Tuomi (a92541c5b9) + + lib-storage: dbox - Use mailbox_list_index_rebuild + + +M src/lib-storage/index/dbox-multi/mdbox-storage.c +M src/lib-storage/index/dbox-multi/mdbox-sync.c +M src/lib-storage/index/dbox-single/sdbox-storage.c +M src/lib-storage/index/dbox-single/sdbox-sync.c +M src/lib-storage/index/index-storage.c + +2021-08-09 15:47:28 +0300 Aki Tuomi (451883dbb8) + + lib-storage: dbox - Allow creating existing folder when rebuilding list + index + + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/index/index-storage.c + +2021-08-13 14:18:21 +0300 Aki Tuomi (2fc8d7024b) + + lib-storage: Add list index rebuild code + + +M src/lib-storage/list/Makefile.am +A src/lib-storage/list/mail-storage-list-index-rebuild.c +M src/lib-storage/mail-storage-private.h + +2021-08-27 12:59:59 +0300 Aki Tuomi (5a75724a2e) + + lib-storage: Populate mailboxes_fs if needed + + +M src/lib-storage/mail-storage.c + +2021-08-20 14:30:46 +0300 Aki Tuomi (3855ccbf9a) + + lib-storage: mailbox-list - Try to get GUID from mailbox path + + +M src/lib-storage/list/mailbox-list-index-status.c + +2021-08-13 10:29:59 +0300 Aki Tuomi (a92b1f9316) + + lib-storage: Add fields to mail_storage needed for list rebuild + + +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.c + +2021-06-30 08:44:33 +0300 Aki Tuomi (36f96c49ca) + + lib-storage: Fix changing mailbox GUID with LAYOUT=index + + The old path would generate Mail/mailboxes/mailboxes/ + +M src/lib-storage/list/mailbox-list-index-backend.c + +2021-06-22 15:59:25 +0300 sergey.kitov (c1a57f47a7) + + doveadm-stats: Add doveadm stats add/remove documentation + + +M doc/man/doveadm-stats.1.in + +2021-05-27 11:46:02 +0300 sergey.kitov (bc31da4d84) + + doveadm: Add 'stats add' and 'stats remove' commands + + +M src/doveadm/Makefile.am +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-stats.c + +2021-06-09 17:23:28 +0300 sergey.kitov (eef75dd719) + + stats: replace hardcoded value of default exporter_include with macro + + +M src/stats/stats-settings.c +M src/stats/stats-settings.h + +2021-06-09 17:22:39 +0300 sergey.kitov (e9a46e3a6d) + + doveadm: Rewrite doveadm stats dump command to allow reuse code in other + commands. + + +M src/doveadm/doveadm-stats.c + +2021-05-10 16:39:21 +0300 sergey.kitov (57bb3b90cb) + + lib-master: Accept filter updates from stats by stats-client. + + +M src/lib-master/stats-client.c + +2021-04-20 17:07:36 +0300 sergey.kitov (0444b730c2) + + stats: Implement ipc interface for adding and removing metrics + + +M src/stats/client-reader.c + +2021-05-10 16:13:12 +0300 sergey.kitov (adbbd40458) + + stats: Implement sending filter updates to connected processes. + + +M src/stats/client-writer.c +M src/stats/client-writer.h + +2021-04-20 17:06:58 +0300 sergey.kitov (a2a79fb376) + + stats: Add functions for adding or removing metrics + + +M src/stats/stats-metrics.c +M src/stats/stats-metrics.h + +2021-04-13 11:49:43 +0300 sergey.kitov (50f36bb1d2) + + stats: Expose stats_metric_setting_parser_info + + +M src/stats/stats-settings.h + +2021-04-20 17:06:26 +0300 sergey.kitov (fcacfde02a) + + lib: Add function removing queries from event_filter + + +M src/lib/event-filter.c +M src/lib/event-filter.h + +2021-09-02 14:31:36 +0300 Timo Sirainen (a476e16ae3) + + lib-http: test-http-client-errors - Fix random hangs + + Wait for subprocesses to be initialized before starting each test. This + should fix random hangs with the test. + +M src/lib-http/test-http-client-errors.c + +2021-09-02 15:39:33 +0300 Timo Sirainen (8b883745d6) + + lib-test: test_subprocess_notify_signal_*() - Add signo parameter + + This allows using multiple notification signals. + +M src/lib-http/test-http-client-errors.c +M src/lib-test/test-subprocess.c +M src/lib-test/test-subprocess.h + +2021-08-19 12:50:04 +0200 Timo Sirainen (5280904733) + + lib-storage: Make sure header parsing is deinitialized after failures + + This should fix all the possible reasons for: Panic: file + index-mail-headers.c: line 198 (index_mail_parse_header_init): assertion + failed: (!mail->data.header_parser_initialized) + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2021-08-19 12:32:45 +0200 Timo Sirainen (0b6a2fb6c1) + + lib-storage: Fix potential assert-crash if filter-stream fails + + If filter-stream isn't read until header (because the parent istream fails), + the header parsing isn't deinitialized. If after the failure the headers are + attempted to be parsed again, there's an assert-crash. Make sure this won't + happen by finishing the filter-istream read, and if that fails then reset + the header parsing anyway. + + Destroying the filter_stream may also change the parent istream offset to + change, so this commit adds an extra seek to beginning of the istream when + beginning to parse the mail headers. + + Fixes: Panic: file index-mail-headers.c: line 198 + (index_mail_parse_header_init): assertion failed: + (!mail->data.header_parser_initialized) + +M src/lib-storage/index/index-mail-headers.c + +2021-08-19 12:29:36 +0200 Timo Sirainen (45df8159fe) + + lib-storage: Split off index_mail_filter_stream_destroy() + + +M src/lib-storage/index/index-mail-headers.c + +2021-08-17 14:33:56 +0200 Markus Valentin (6b7e4d1527) + + imapc: Fix crashing when copying nonexistent mails + + Check the msgmap before attempting to copy an mail which may has been + expunged already. Fixes: + + Panic: file mail-storage.c: line 2385 + (mailbox_transaction_commit_get_changes): assertion failed: (ret < 0 || + seq_range_count(&changes_r->saved_uids) == save_count || + array_count(&changes_r->saved_uids) == 0) + +M src/lib-storage/index/imapc/imapc-save.c + +2021-08-18 14:04:53 +0200 Timo Sirainen (8e592661d5) + + lib-storage: Fix assert-crash in special partial mail parsing failures + + This happened for example if: + - mail_precache() started parsing mail + - header was parsed, but mail body parsing failed due to mail size mismatch + - vsize parsing doesn't restart header parsing, because header size is + already known + - body parsing assert-crashes because there is no messsage parser + initialized + + Fixes: Panic: file index-mail.c: line 1290 (index_mail_parse_body): + assertion failed: (data->parser_ctx != NULL) + +M src/lib-storage/index/index-mail.c + +2021-08-12 12:42:40 +0300 Aki Tuomi (35f7ff1c41) + + lib-oauth2: Add unit test for missing exp field + + +M src/lib-oauth2/test-oauth2-jwt.c + +2021-08-12 12:40:39 +0300 Aki Tuomi (5bc6fa7571) + + lib-oauth2: Add unit tests for valid tokens + + +M src/lib-oauth2/test-oauth2-jwt.c + +2021-06-08 00:35:13 +0200 s3lph <5564491+s3lph@users.noreply.github.com> (f3bef96857) + + lib-oauth2-jwt: Remove 'nbf < iat' check, as it's not mandated by RFC7519, + and not uncommon to predate the nbf field + + +M src/lib-oauth2/oauth2-jwt.c + +2021-08-24 22:58:59 +0200 Timo Sirainen (8a7fa002d2) + + lib-test: Fix race when subprocess immediately receives signal + + Signal could be received before test_subprocess_is_child=1 is set, causing + the subprocess's signal handler to also attempt to cleanup other + subprocesses. + + This was causing http-test-client-errors unit tests to fail somewhat + randomly, especially when running them only with 1 CPU. + +M src/lib-test/test-subprocess.c + +2021-08-24 15:02:44 +0300 Timo Sirainen (07d66366ab) + + lib: Add test-macros + + +M src/lib/Makefile.am +M src/lib/test-lib.inc +A src/lib/test-macros.c + +2021-08-23 14:21:02 +0300 Timo Sirainen (a4f9219709) + + lib: Rewrite POINTER_CAST_TO() to avoid new clang warning + + Fixes: warning: performing pointer subtraction with a null pointer has + undefined behavior [-Wnull-pointer-subtraction] + +M src/lib/macros.h + +2021-08-23 14:20:54 +0300 Timo Sirainen (9c4077a843) + + dbox: Remove unnecessary variable + + The variable was set and updated, but never read. + +M src/lib-storage/index/dbox-common/dbox-file.c + +2021-08-23 14:20:24 +0300 Timo Sirainen (a11c739b86) + + lib-dcrypt: Remove unnecessary variable + + The variable was set and updated, but never read. + +M src/lib-dcrypt/istream-decrypt.c + +2021-08-23 11:46:46 +0300 Martti Rannanjärvi (bc679231f1) + + doveadm-dsync: Free ssl_iostream_context on connection failure + + +M src/doveadm/doveadm-dsync.c + +2021-04-13 18:25:06 +0200 Stephan Bosch (415c305d6c) + + lib-smtp: smtp-server-cmd-rcpt - Fix assert crash occurring for pipelined + MAIL RCPT MAIL sequence. + + The assertion is wrong in that it assumes that no MAIL commands can be + pending once RCPT command is next to reply. The RCPT command does not block + the pipeline, so that a subsequent MAIL command can also be pending (but + will almost never succeed). + +M src/lib-smtp/smtp-server-cmd-rcpt.c +M src/lib-smtp/test-smtp-server-errors.c + +2021-04-13 18:25:31 +0200 Stephan Bosch (23246612f2) + + lib-smtp: smtp-server-cmd-data - Add comment to pipeline state assertion. + + +M src/lib-smtp/smtp-server-cmd-data.c + +2021-08-20 01:19:28 +0200 Stephan Bosch (741a963c19) + + lib-smtp: smtp-server-cmd-data - Remove useless trans != NULL checks. + + +M src/lib-smtp/smtp-server-cmd-data.c + +2021-08-19 17:06:42 +0100 Siavash Tavakoli (285cf9c849) + + dict-sql: Fail early if there's unexpected number of bind arguments for iter + + Otherwise, lib-sql raises a panic. + +M src/lib-dict-backend/dict-sql.c + +2021-08-17 15:23:31 +0200 Timo Sirainen (e34bffaab5) + + lib: istreams - Make sure freeing snapshots can't access freed parent + istream memory + + This happened after the recent istream-header-filter snapshot changes. + +M src/lib/istream.c + +2021-08-18 19:49:43 +0200 Timo Sirainen (b401e4136f) + + imap: Fix mailbox leak if MOVE can't open the source mailbox + + Broken by 143b7c2b412ed8f155e812603fda81886bec466e + + Fixes: Panic: file mail-user.c: line 229 (mail_user_deinit): assertion + failed: ((*user)->refcount == 1) + +M src/imap/cmd-copy.c + +2021-08-18 13:54:39 +0100 Siavash Tavakoli (16deb5b8bc) + + lib-lua: Don't include lua_resume_compat() for 5.1 + + lua_resume() is not supported in 5.1, so don't try to add a compatibility + function that fails compilation. + +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-compat.h + +2021-05-25 19:26:14 +0300 Timo Sirainen (bb1d67a870) + + lib: Remove unused event_filter_add() + + +M src/lib/event-filter.c +M src/lib/event-filter.h + +2021-08-16 17:13:27 +0300 Timo Sirainen (f1bbfcb712) + + lib: test-event-filter - Replace event_filter_add() with + event_filter_parse() + + +M src/lib/test-event-filter.c + +2021-05-24 23:57:13 +0300 Timo Sirainen (c4369cbf6a) + + lib: Add comments to event-related code + + +M src/lib/event-log.c +M src/lib/event-log.h +M src/lib/lib-event-private.h +M src/lib/lib-event.h + +2021-05-24 22:26:27 +0300 Timo Sirainen (d2c0f1374c) + + lib: event_want_level() - Minor code cleanup + + event_want_log_level() internally does both of these checks, so it's enough + to just check its return value. + +M src/lib/event-log.c + +2021-08-17 12:12:18 +0300 Timo Sirainen (730b2a449f) + + lib-fs: Fix fs_stats.copy_count tracking with fs_default_copy() + + The copy_count could have been decreased too many times with async + operations. + +M src/lib-fs/fs-api-private.h +M src/lib-fs/fs-api.c + +2021-08-16 15:36:37 +0300 Timo Sirainen (b82faee3cb) + + global: Add ATTR_UNSIGNED_WRAPS to fix various ubsan issues + + +M src/auth/crypt-blowfish.c +M src/lib/numpack.c +M src/lib/sha3.c + +2021-08-05 18:53:57 +0300 Timo Sirainen (9e80b588f4) + + global: Fix various ubsan issues + + +M src/lib-mail/istream-header-filter.c +M src/lib-mail/test-qp-decoder.c +M src/lib-test/test-istream.c +M src/lib/test-base64.c +M src/lib/test-data-stack.c + +2021-08-17 10:59:49 +0300 Timo Sirainen (05189ecdc7) + + doveadm: Free memory for all loaded mail_plugins at deinit + + +M src/doveadm/doveadm-mail.c + +2021-08-17 10:50:34 +0300 Timo Sirainen (654d7b2d11) + + doveadm pw -l: Free all memory to avoid memory leak complaints + + +M src/doveadm/doveadm-pw.c + +2021-08-17 09:30:25 +0200 Timo Sirainen (b997fc957e) + + doveadm batch: Fix memory leak + + +M src/doveadm/doveadm-mail-batch.c + +2021-08-17 11:06:36 +0300 Timo Sirainen (46a511412a) + + doveadm: Split off doveadm_mail_cmd_deinit() + + +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-mail.h + +2021-05-07 21:15:04 +0300 Timo Sirainen (f708052c5d) + + doveadm: Make doveadm_mail_cmd_free() public + + +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-mail.h + +2021-08-13 11:08:30 +0100 Siavash Tavakoli (f28482afb8) + + global: Use consistent lua function names + + Change lua-style function names to be consistent with dovecot's style. + +M src/auth/db-lua.c +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-error.c +M src/lib-lua/dlua-pushstring.c +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c +M src/lib-storage/mail-lua.c +M src/lib-storage/mail-storage-lua.c +M src/lib-storage/mail-user-lua.c +M src/lib-storage/mailbox-lua.c +M src/plugins/push-notification/push-notification-driver-lua.c + +2021-08-12 19:43:25 +0100 Siavash Tavakoli (e14026e708) + + lib-lua: test-lua: Fix the test for lua versions later than 5.3 + + +M src/lib-lua/test-lua.c + +2021-08-12 19:40:22 +0100 Siavash Tavakoli (72a864b4b0) + + lib-lua: Add lua_resume_compat() and use it in lua versions prior to 5.4 + + Starting lua 5.4 "lua_resume()" expects an extra "nresults" argument. Add a + compatibility function to handle this argument in earlier versions. + +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-compat.h +M src/lib-lua/dlua-resume.c + +2020-05-24 14:47:18 -0400 Felipe Gasper (2595113387) + + man: Document command/args destination format to sync/backup. + + +M doc/man/doveadm-sync.1.in + +2021-08-16 14:52:50 +0300 Timo Sirainen (e14e68cb0b) + + lib-compression: istream-lz4 - Fix handling partial header reads + + Reading assert-crashed if the header was read only partially. Either because + the file really was truncated or because parent stream already had fewer + bytes buffered. + +M src/lib-compression/istream-lz4.c +M src/lib-compression/test-compression.c + +2021-08-16 14:51:29 +0300 Timo Sirainen (d8995452c8) + + lib-compression: istream-lz4 - Remove redundant check + + The loop is reached only if ret is 0, so there's no need to check it again. + +M src/lib-compression/istream-lz4.c + +2021-08-16 14:50:10 +0300 Timo Sirainen (eea3b751de) + + lib-compression: istream-lz4 - Add asserts to make sure parent buffer isn't + full + + The parent buffer's max size would have to be tiny for these to happen. + +M src/lib-compression/istream-lz4.c + +2021-07-01 13:52:29 +0100 Siavash Tavakoli (f38100a5fe) + + dict: Use dict-init-cache + + Make use of dict-init-cache for initialization and deinitialization of + dicts. + +M src/dict/dict-connection.c +M src/dict/main.c + +2021-06-25 14:11:52 +0100 Siavash Tavakoli (222e8d5b55) + + dict: Add caching mechanism for initializing dicts + + Add a pool for dict instances. Each dict is refcounted and given a grace + period of 30 seconds for deletion. If refcount drops to 0 and no new dict + operation uses the instance in that period, it will be freed. A maximum of + 10 dicts are kept in the cache. + +M src/dict/Makefile.am +A src/dict/dict-init-cache.c +A src/dict/dict-init-cache.h + +2021-08-09 00:35:09 +0100 Siavash Tavakoli (f5a2a9a6d8) + + dict: Add dict_created and dict_destroyed events + + Inherit from dict.event and emitted at dict initialization/deinit. + +M src/lib-dict/dict.c + +2021-08-15 12:45:12 +0300 Martti Rannanjärvi (fcf23d9919) + + lib-sasl: test-sasl-client.c - Initialize authid of sasl_empty_set + + This fixes the compiler warning: + + test-sasl-client.c:8:1: error: missing initializer for field 'authid' + of 'const struct dsasl_client_settings' + +M src/lib-sasl/test-sasl-client.c + +2021-08-15 07:12:42 +0300 Martti Rannanjärvi (0434bd96f7) + + lib-sasl: oauthbearer - Fix memory leak on auth failure + + +M src/lib-sasl/mech-oauthbearer.c + +2021-08-11 09:48:06 +0300 Aki Tuomi (64ab5d866c) + + lib-sasl: Add unit tests + + +M src/lib-sasl/Makefile.am +A src/lib-sasl/test-sasl-client.c + +2021-08-11 09:59:05 +0300 Aki Tuomi (5071cfe16c) + + lib-sasl: Do not crash if password is NULL + + +M src/lib-sasl/dsasl-client.c + +2021-08-11 09:47:17 +0300 Aki Tuomi (feba4f0c88) + + lib-sasl: When setting port, parse value, not key. + + Broken in 228f1e8d583 + +M src/lib-sasl/mech-oauthbearer.c + +2021-08-11 08:49:44 +0300 Aki Tuomi (902407f7eb) + + auth: Do not forward empty "master" passdb field + + +M src/auth/auth-request-handler.c + +2021-08-11 08:48:29 +0300 Aki Tuomi (f4cf9d6974) + + login-common: Ignore empty value for "master" passdb extra field + + +M src/login-common/client-common-auth.c + +2021-08-10 12:26:14 +0100 Siavash Tavakoli (a0c1fe343e) + + mail-crypt: Add password confirmation for doveadm cryptokey password command + + To prevent setting wrong passwords by accident. + +M src/plugins/mail-crypt/doveadm-mail-crypt.c + +2021-08-10 12:23:55 +0100 Siavash Tavakoli (13830767a0) + + mail-crypt: Fix -O argument type for doveadm cryptokey password command + + Should be boolean instead of string. + +M src/plugins/mail-crypt/doveadm-mail-crypt.c + +2021-04-28 02:01:14 +0300 Timo Sirainen (ddf224808e) + + lib-index: Fix "Extension introduction for unknown id" errors after map is + generated + + This happens when: + * View is opened + * Messages are expunged + * View is synced with NOEXPUNGES flag + * A new extension is introduced + * Index is rotated at least twice + * View is again synced with NOEXPUNGES flag + * More changes are done to index with the new extension + * Once more view is synced with NOEXPUNGES flag + + The last sync will see changes with the new extension ID, but the view's map + doesn't know its ID. + +M src/lib-index/mail-index-sync-ext.c +M src/lib-index/test-mail-index.c + +2021-06-24 12:58:58 -0400 Josef 'Jeff' Sipek (710346bcb8) + + virtual: Expunge old emails if backend box guid changed + + This introduces a new extensible "ext2" header to make it easier to add new + fields in the future. It also allows keeping backwards/forwards + compatibility with the old code, so the virtual index isn't rebuilt on + upgrades or downgrades. + +M src/plugins/virtual/virtual-storage.c +M src/plugins/virtual/virtual-storage.h +M src/plugins/virtual/virtual-sync.c + +2021-07-29 12:38:12 +0300 Timo Sirainen (5310858bd0) + + virtual: Don't use data stack when building extension header + + Some users may have thousands of mailboxes, which grows the data stack + unnecessarily large. + +M src/plugins/virtual/virtual-sync.c + +2021-08-09 13:01:12 +0300 Timo Sirainen (97367ef617) + + indexer: Fix crash if client disconnects while it's waiting for command + reply + + This happened for example if IMAP SEARCH triggered long fts indexing and the + IMAP client disconnected while waiting for the reply. + + Broken by f62a25849358e40a08a2c47f5bcaa1613a31d076 + +M src/indexer/indexer-client.c + +2021-05-06 11:58:21 +0200 Stephan Bosch (9f5e723974) + + lib-smtp: smtp-server-cmd-data - Fix global state cleanup upon DATA command + destroy. + + Should cleanup global state only when it belongs to the DATA/BDAT command + currently being destroyed. + + Fixes NULL-dereference in i_stream_read() found by OSS-Fuzz. + +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/test-smtp-server-errors.c + +2021-08-05 11:38:26 +0200 Stephan Bosch (da1d2332bd) + + lib-smtp: test-smtp-server-errors - Perform "Bad pipelined DATA" test with + actual pipelining. + + +M src/lib-smtp/test-smtp-server-errors.c + +2021-08-03 19:47:54 +0300 Timo Sirainen (7f9cfccb54) + + imap, pop3: Prevent reading ssl_ca setting into memory + + Especially with imap there can be a lot of processes and a large ssl_ca + could be wasting a lot of memory. This was already the old behavior before + removing ssl_* settings from lib-storage. + +M src/imap/main.c +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-settings.h +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h +M src/pop3/main.c + +2021-08-03 19:46:59 +0300 Timo Sirainen (4ea4a85607) + + config: Add exclude= settings to drop specific settings + + +M src/config/config-connection.c +M src/config/config-request.c +M src/config/config-request.h +M src/config/doveconf.c + +2021-07-29 18:04:53 +0300 Timo Sirainen (327bd99f84) + + lib-storage: Remove SSL settings from mail_storage_settings + + They can be accessed via master_service_ssl_settings instead. + +M src/lib-master/master-service-ssl-settings.c +M src/lib-storage/mail-storage-settings.c +M src/lib-storage/mail-storage-settings.h + +2021-07-29 18:02:57 +0300 Timo Sirainen (1e5324b580) + + lib-storage: mail_user_init_ssl_client_settings() - Use + master_service_ssl_settings + + This will allow dropping the duplicate SSL settings handling. + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-user.c + +2021-07-29 17:45:16 +0300 Timo Sirainen (4930b1b883) + + dsync: Get SSL settings via master_service_ssl_settings + + +M src/doveadm/doveadm-dsync.c + +2021-07-29 17:44:43 +0300 Timo Sirainen (6fcaffd1e5) + + lib-storage: Add mail_storage_service_user_get_ssl_settings() + + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h + +2021-07-29 17:44:25 +0300 Timo Sirainen (aa8cb602eb) + + lib-master: Add master_service_ssl_settings_get_from_parser() + + +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/master-service-ssl-settings.h + +2021-07-29 17:57:42 +0300 Timo Sirainen (61a7a9e00e) + + global: Don't zero SSL settings unnecessarily + + mail_user_init_ssl_client_settings() and mail_user_init_fs_settings() will + clear them again anyway. + +M src/doveadm/doveadm-settings.c +M src/lib-lda/mail-send.c +M src/lib-storage/mailbox-list.c +M src/lmtp/lmtp-proxy.c +M src/plugins/fts-solr/fts-backend-solr-old.c +M src/plugins/fts-solr/fts-backend-solr.c +M src/plugins/fts/fts-parser-tika.c +M src/plugins/push-notification/push-notification-driver-ox.c +M src/stats/event-exporter-transport-http-post.c +M src/submission/submission-backend-relay.c + +2021-07-29 17:58:23 +0300 Timo Sirainen (c59736a995) + + lib-storage: mail_user_init_fs_settings() - Clarify that ssl settings are + fully initialized + + +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2021-07-29 17:57:12 +0300 Timo Sirainen (b8a60edd6a) + + lib-storage: mail_user_init_ssl_client_settings() - Clarify that ssl + settings are fully initialized + + +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2021-07-29 15:31:56 +0300 Timo Sirainen (1b2134e0be) + + doveadm: Free SSL iostream contexts at deinit + + This wasn't really a memory leak, because the contexts are always kept + allocated until deinit anyway. + +M src/doveadm/doveadm-mail-server.c + +2021-07-29 16:06:50 +0300 Timo Sirainen (48d8cb6b4f) + + lib-ssl-iostream: ssl_iostream_context_unref(NULL) is a no-op + + +M src/lib-ssl-iostream/iostream-ssl.c + +2021-08-07 18:52:09 +0200 Timo Sirainen (c84de300ae) + + man: doveadm-pw - Fix default scheme to be CRYPT / $2y$ bcrypt + + +M doc/man/doveadm-pw.1.in + +2021-07-22 15:31:11 +0300 Timo Sirainen (c5cbbdf177) + + lib-index: Remove mail_index_transaction_get_highest_modseq() + + This isn't actually used anywhere, so there's no need to keep it. + +M src/lib-index/mail-index-transaction-export.c +M src/lib-index/mail-index-transaction.c +M src/lib-index/mail-index.h +M src/lib-index/mail-transaction-log-file.c + +2021-07-22 15:28:39 +0300 Timo Sirainen (4ddc389c16) + + lib-index: mail_index_transaction_get_highest_modseq() - Fix handling + MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ + + MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ flag updates didn't calculate the + returned modseq correctly. This function wasn't used outside + --with-devel-checks though, but with it this fixes: + + Panic: file mail-index-transaction.c: line 212 + (mail_index_transaction_commit_real): assertion failed: (t->reset || + expected_highest_modseq == log->head->sync_highest_modseq) + +M src/lib-index/mail-index-transaction-export.c + +2021-07-22 14:24:11 +0300 Timo Sirainen (11c6ffa0f6) + + lib-index: Avoid modseq warnings --with-devel-checks + + Avoids warnings: Requested highest-modseq for transaction, but modseq + tracking isn't enabled for the file (this shouldn't happen) + +M src/lib-index/mail-index-transaction.c + +2021-07-22 14:29:24 +0300 Timo Sirainen (a6548a3b73) + + director: Avoid calling timeval_diff_msecs() with too great time difference + + Fixes assert-crash --with-devel-checks: Panic: file time-util.c: line 76 + (timeval_diff_msecs): assertion failed: (diff <= INT_MAX) + +M src/director/director-connection.c + +2021-07-14 10:00:28 +0300 Aki Tuomi (5245129f06) + + lib: data-stack - Initialize alloc_count / alloc_bytes + + This has only effect with devel checks enabled. Fixes counter values to show + sensible data. + +M src/lib/data-stack.c + +2021-07-13 13:41:14 +0300 Aki Tuomi (d74cf4ca2a) + + lib: data-stack - Allow errno changes when sending event + + +M src/lib/data-stack.c + +2021-07-29 22:21:52 +0300 Timo Sirainen (368a96783e) + + lib-master, global: Remove unnecessary MASTER_SERVICE_FLAG_USE_SSL_SETTINGS + + SSL client settings are now always read. + +M src/auth/main.c +M src/doveadm/doveadm.c +M src/doveadm/main.c +M src/lib-master/master-service.h +M src/lmtp/main.c +M src/login-common/main.c +M src/stats/main.c + +2021-07-29 22:20:17 +0300 Timo Sirainen (36ff43f1a9) + + lib-master: Use ssl-server settings only when necessary + + +M src/lib-master/master-service-private.h +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/master-service.c + +2021-07-29 22:18:56 +0300 Timo Sirainen (a7fb3cce6a) + + lib-master: Remove unused master_service_is_ssl_module_loaded() + + +M src/lib-master/master-service-private.h +M src/lib-master/master-service.c +M src/lib-master/master-service.h + +2021-07-29 21:45:18 +0300 Timo Sirainen (c6cea57577) + + lib-master, login-common: Split off master_service_ssl_server_settings + + +M src/config/settings-get.pl +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/master-service-ssl-settings.h +M src/lib-master/master-service-ssl.c +M src/login-common/client-common.c +M src/login-common/client-common.h +M src/login-common/login-settings.c +M src/login-common/login-settings.h +M src/login-common/main.c + +2021-07-29 21:43:03 +0300 Timo Sirainen (79a210c1f7) + + lib-master, global: Split master_service_ssl_settings_to_iostream_set() to + client/server functions + + +M src/auth/auth-policy.c +M src/doveadm/doveadm-settings.c +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/master-service-ssl-settings.h +M src/lmtp/lmtp-proxy.c +M src/login-common/client-common.c +M src/login-common/login-proxy.c +M src/login-common/main.c +M src/stats/event-exporter-transport-http-post.c + +2021-08-05 17:48:42 +0300 Timo Sirainen (77dd65422c) + + master: Avoid creating prefork timeout if process_limit is already reached + + +M src/master/service-monitor.c + +2021-08-05 17:53:58 +0300 Timo Sirainen (0610336a86) + + master: Avoid high CPU usage when process_min_avail reaches process_limit + + process_min_avail handling always created a 0ms timeout to try to create the + missing processes. This timeout was supposed to stop when it couldn't launch + all the wanted processes, but the check wasn't done right. This ended up + causing the timeout to be called rapidly over and over again. + +M src/master/service-monitor.c + +2021-07-22 14:51:05 -0600 Michael M Slusarz (904ee71927) + + lazy_expunge: Add lazy_expunge_exclude setting + + This allows mailboxes to be excluded via configuration. + +M src/plugins/lazy-expunge/lazy-expunge-plugin.c + +2021-08-03 17:38:33 +0300 Timo Sirainen (9d02ac2e42) + + fts: Use mailbox-match-plugin API for fts_autoindex_exclude + + This doesn't change the functionality, just deduplicates the code. + +M src/plugins/fts/fts-storage.c +M src/plugins/fts/fts-user.c +M src/plugins/fts/fts-user.h + +2021-08-04 15:50:54 +0300 Timo Sirainen (3eb404aa8c) + + fts: Always initialize struct fts_user + + Initializing lib-fts is still optional within it. + +M src/plugins/fts-lucene/fts-lucene-plugin.c +M src/plugins/fts-solr/fts-solr-plugin.c +M src/plugins/fts/fts-user.c +M src/plugins/fts/fts-user.h + +2021-07-22 14:20:25 -0600 Michael M Slusarz (27a98a2d3c) + + lib-storage: Add mailbox exclusion plugin API + + Allows mailbox exclusion configuration to be easily added to any plugin. + +M src/lib-storage/Makefile.am +A src/lib-storage/mailbox-match-plugin.c +A src/lib-storage/mailbox-match-plugin.h + +2021-08-04 19:57:35 +0300 Timo Sirainen (8939c30ce9) + + master: Fix unfinished "time moved backwards" comment + + +M src/master/main.c + +2021-08-04 19:54:29 +0300 Timo Sirainen (0768778bb6) + + master: Log a warning also about "time moved forwards" + + This isn't really important to know, but it could help figure out + performance problems if it happens a lot. + +M src/master/main.c + +2021-08-04 19:52:14 +0300 Timo Sirainen (24216a4924) + + lib: ioloop - Handle "time moved forwards" only after 100ms difference + + Previously this was done after even a single microsecond difference, causing + it to happen almost constantly. This was causing performance problems when + there were many timeouts that had to be updated. Especially master process + could have been spending a lot of time unnecessarily here. + + Broken by b258137d0e0618ae792e3606071a1715d26f107b + +M src/lib/ioloop.c + +2021-08-04 19:55:36 +0300 Timo Sirainen (87bd288902) + + lib: ioloop - Fix 0 timeout with kqueue() and select() + + With these it was waiting for 1 ms instead of 0. + + Broken by fac27f192d8432c45d360025613f7d432271c5bb + +M src/lib/ioloop.c + +2021-08-04 17:24:00 +0300 Timo Sirainen (1f6aaaeb3c) + + fts: Fix internal error when fts_index_timeout is set + + Broken by cf114f90e0ba25c18db846ee582e3a130bd52949 + +M src/plugins/fts/fts-indexer.c + +2021-08-03 16:11:35 +0300 Timo Sirainen (b79d3118e5) + + acl: Cast enums explicitly to int in sorting function + + Fixes ubsan complaint: runtime error: unsigned integer overflow: 0 - 4 + cannot be represented in type 'unsigned int' + +M src/plugins/acl/acl-api.c + +2021-06-29 22:45:33 +0200 Stephan Bosch (bb6efaa417) + + lib-program-client: program-client-remote - Fix signed integer arithmetic. + + Make type cast explicit to gain ubsan approval. Also prevent negative + reserve_mod from having unexpected effect. + +M src/lib-program-client/program-client-remote.c + +2021-08-03 11:44:06 +0300 Martti Rannanjärvi (ac769778d1) + + util: dovecot-sysreport - Fix help to have -o as the short form of --core + + +M src/util/dovecot-sysreport + +2021-08-03 10:56:08 +0300 Martti Rannanjärvi (6cbeaf165d) + + util: dovecot-sysreport - Use only spaces for indentation + + Stop mixing tabs and spaces. + +M src/util/dovecot-sysreport + +2021-07-27 20:13:24 +0300 Timo Sirainen (23388cf96e) + + stats: Revert the previous OpenMetrics info type revert + + The OpenMetrics standard does support "info" type. The original Prometheus + format doesn't support it, but our support is for OpenMetrics. They don't + even have any overlapping types that could be used for this, so the only + other possibility would have been to make this configurable. + + Reverts 55a519d18fbbb8435854f1fcf2642b908d6fc074 + +M src/stats/stats-service-openmetrics.c + +2021-07-28 16:39:59 +0300 Timo Sirainen (8b80c45ab1) + + submission-login: Fix compiling error with some older compilers + + +M src/submission-login/submission-proxy.c + +2021-07-05 00:37:46 +0200 Stephan Bosch (c096b7fd77) + + submission-login: submission-proxy - Optionally send XCLIENT LOGIN to + backend and skip authentication. + + This behavior is enabled by returning proxy_noauth from passdb. + +M src/submission-login/submission-proxy.c + +2021-07-19 00:29:23 +0200 Stephan Bosch (f94dd904b8) + + login-common: Add proxy field proxy_noauth. + + +M src/login-common/client-common-auth.c +M src/login-common/client-common.h + +2021-07-19 00:24:32 +0200 Stephan Bosch (bdba22fecb) + + submission-login: submission-proxy - Move + submission_proxy_success_reply_sent(). + + +M src/submission-login/submission-proxy.c + +2021-05-18 20:18:45 +0300 Timo Sirainen (c5387d7778) + + dict: Use the dict name as the log prefix + + Otherwise if there are multiple dicts it may not be obvious which one is + causing the errors. + +M src/dict/dict-connection.c + +2021-07-22 11:26:10 +0300 Aki Tuomi (55a519d18f) + + stats: Revert dovecot build information to untyped data + + OpenMetrics does not know type 'info', so use 'untyped' instead. + + Broken in ae678116a79fff609cdf4fb1eb7eb3db2975bf1c + +M src/stats/stats-service-openmetrics.c + +2021-07-21 18:12:36 +0300 Timo Sirainen (bf111f6830) + + lib-storage: mail_cache_*_fields - Check for invalid header names while + parsing config + + This way the errors are noticed early on. + +M src/config/settings-get.pl +M src/lib-storage/mail-storage-settings.c + +2020-04-14 12:24:50 +0300 Timo Sirainen (723d129153) + + lib-storage: mail_cache_*_fields - Log an error if hdr. isn't valid + + Mainly verify that it doesn't have accidental UTF-8 characters that aren't + easily visible in text editors. + +M src/lib-storage/index/index-storage.c + +2020-04-19 14:03:24 +0300 Timo Sirainen (ecac22474a) + + lib-mail: Add message_header_name_is_valid() + + +M src/lib-mail/message-header-parser.c +M src/lib-mail/message-header-parser.h + +2021-07-22 16:38:22 +0300 Timo Sirainen (fafd7ad584) + + login-proxy: Make sure input line isn't freed too early + + proxy_parse_line() could free the proxy's istream, which frees the line + string. With IMAP the line could have been used as part of the error string + passed to login_proxy_failed(), which can free the istream before using the + string for logging purposes. This could have resulted in logging a corrupted + line or a crash. + + Broken by e3134289529cec16ade44cefd0fd26594ae40e30 + +M src/login-common/client-common-auth.c + +2021-07-23 14:45:03 +0200 Timo Sirainen (af3e934e33) + + lib-test: Make sure child processes exit cleanly with SIGTERM + + It's normal behavior that the parent process kills the child process with + SIGTERM. This shouldn't result in the child process dying with SIGTERM, but + a clean exit. This was causing http-test-client-errors unit tests to fail + somewhat randomly, especially when running them only with 1 CPU. + +M src/lib-test/test-subprocess.c + +2021-07-21 14:06:55 +0300 Aki Tuomi (128bcb85a9) + + lib-test: Ensure we send signals to regular PIDs only + + +M src/lib-test/test-subprocess.c + +2021-07-21 14:05:34 +0300 Aki Tuomi (34bdfdcbc7) + + lib-test: Update subprocess list after forking + + Due to a race condition, we could end up killing PID 0 by accident + sometimes. + +M src/lib-test/test-subprocess.c + +2021-07-22 11:23:00 +0300 Timo Sirainen (e3e4cd2681) + + lib: random_fill() - Optimize away memmove() + + We just need to track the position of how far the random_next buffer has + been used. + +M src/lib/randgen.c + +2021-07-05 00:36:36 +0200 Stephan Bosch (82d9013dd3) + + submission-login: submission-proxy - Send XCLIENT data in multiple commands + if line exceeds 512 bytes. + + When the proxy talks to non-Dovecot software, failures could occur + otherwise. Particularly Postfix will fail. + +M src/submission-login/client.h +M src/submission-login/submission-proxy.c + +2021-06-19 00:31:19 +0200 Stephan Bosch (12c9ce36a4) + + submission-login: submission-proxy - Send PROTO and HELO XCLIENT fields. + + +M src/submission-login/submission-proxy.c + +2021-06-18 19:32:03 +0200 Stephan Bosch (9127db1a89) + + submission-login: submission-proxy - Properly send EHLO after XCLIENT. + + +M src/submission-login/client.h +M src/submission-login/submission-proxy.c + +2021-07-05 23:33:51 +0200 Stephan Bosch (3764af4b42) + + submission-login: submission-proxy - Reorder XCLIENT fields to match + lib-smtp client. + + +M src/submission-login/submission-proxy.c + +2021-06-19 00:25:02 +0200 Stephan Bosch (b1e0d63624) + + submission-login: submission-proxy - Handle EHLO reply in a separate + function. + + +M src/submission-login/submission-proxy.c + +2021-06-18 23:58:38 +0200 Stephan Bosch (297f39ba26) + + submission-login: submission-proxy - Move sending STARTTLS to separate + function. + + +M src/submission-login/submission-proxy.c + +2021-06-18 19:52:33 +0200 Stephan Bosch (bbf725af33) + + submission-login: submission-proxy - Avoid sending empty XCLIENT FORWARD + field. + + +M src/submission-login/submission-proxy.c + +2021-06-18 19:31:54 +0200 Stephan Bosch (52516b0566) + + submission: Separately pass XCLIENT HELO value from pre-login to post-login + service. + + +M src/submission-login/client-authenticate.c +M src/submission/main.c +M src/submission/submission-client.c +M src/submission/submission-client.h + +2021-06-18 17:02:23 +0200 Stephan Bosch (019522fc34) + + submission: submission-backend-relay - Use + smtp_server_connection_get_proxy_data() for composing client settings. + + +M src/submission/submission-backend-relay.c + +2021-06-18 17:46:07 +0200 Stephan Bosch (13f5a8132c) + + submission: main - Restructure parsing of login input data. + + Needed for adding additional fields. + +M src/submission/main.c + +2021-06-18 16:43:55 +0200 Stephan Bosch (0c90556d3f) + + submission-login: client-authenticate - Restructure composition of + master_prefix. + + Needed for later commit. + +M src/submission-login/client-authenticate.c + +2021-06-18 19:27:40 +0200 Stephan Bosch (b33f1b875d) + + lib-smtp: smtp-server-connection - Record proxied EHLO domain separately. + + This prevents it from being overriden by a local EHLO command. + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h + +2021-06-18 19:02:34 +0200 Stephan Bosch (53cdb6dedd) + + lib-smtp: smtp-server - Make smtp_server_connection_set_proxy_data() public. + + +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server.h + +2021-06-18 16:54:51 +0200 Stephan Bosch (5f5f93e962) + + lib-smtp: smtp-server-connection - Use + smtp_server_connection_get_proxy_data() for the conn_proxy_data_updated() + callback. + + Removes code duplication. + +M src/lib-smtp/smtp-server-connection.c + +2021-06-18 16:52:26 +0200 Stephan Bosch (26b64133b2) + + lib-smtp: smtp-server-connection - Allow username/ehlo to be set before + smtp_server_connection_login(). + + This allows setting the proxy data early. + +M src/lib-smtp/smtp-server-connection.c + +2021-06-18 19:25:43 +0200 Stephan Bosch (0f55dcb0bd) + + lib-smtp: Reformat smtp-server.h. + + +M src/lib-smtp/smtp-server.h + +2021-06-18 16:31:08 +0200 Stephan Bosch (85669603b8) + + submission: Reformat submission-client.h. + + +M src/submission/submission-client.h + +2021-06-18 16:30:52 +0200 Stephan Bosch (cf73c66df0) + + submission: Reformat submission-client.c. + + +M src/submission/submission-client.c + +2021-06-24 00:19:16 +0200 Stephan Bosch (c8bdb4578c) + + login-common: Add support for recording rawlog of connection between proxy + and backend. + + +M src/login-common/client-common-auth.c +M src/login-common/login-proxy.c +M src/login-common/login-proxy.h +M src/login-common/login-settings.c +M src/login-common/login-settings.h + +2021-07-21 17:14:26 +0300 Timo Sirainen (d757b9af43) + + doveadm: Mark fs_cmd_help() with ATTR_NORETURN + + This helps static analyzers understand that the function doesn't return. + +M src/doveadm/doveadm-fs.c + +2021-07-21 17:12:05 +0300 Timo Sirainen (6e7928f5cf) + + doveadm: Avoid passing NULL to memcpy() even though zero bytes are copied + + Makes static analyzers happier. + +M src/doveadm/doveadm.c + +2021-07-19 16:38:08 +0300 Timo Sirainen (567d853885) + + doveadm: Remove dead assignment + + +M src/doveadm/client-connection-tcp.c + +2021-04-22 11:09:49 +0300 Timo Sirainen (a7146d0939) + + lib: Use 32 byte buffer for getting randomness + + This reduces the number of syscalls when small amount of randomness is + requested, like i_rand*() calls using only 4 bytes at a time. + +M src/lib/randgen.c + +2021-06-10 12:16:20 +0300 Timo Sirainen (8d396dda21) + + doveadm: Remove code related to obsolete doveadm_mail_cmd handling + + struct doveadm_mail_cmd couldn't be completely removed since v2 mail + commands are still converted to it. + +M src/doveadm/client-connection-tcp.c +M src/doveadm/doveadm-mail-batch.c +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-mail.h +M src/doveadm/doveadm.c + +2021-06-10 12:06:40 +0300 Timo Sirainen (5676c510bf) + + doveadm sync/backup/dsync-server: Convert to v2 command + + +M src/doveadm/doveadm-dsync.c +M src/doveadm/doveadm-dsync.h +M src/doveadm/doveadm-mail.c + +2021-06-10 11:51:51 +0300 Timo Sirainen (dfe41ddaac) + + doveadm batch: Convert to v2 command + + +M src/doveadm/doveadm-mail-batch.c +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-mail.h + +2021-06-10 01:14:14 +0300 Timo Sirainen (1e48423c17) + + doveadm: Remove struct doveadm_cmd and related code + + +M src/doveadm/client-connection-tcp.c +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm.c +M src/doveadm/doveadm.h +M src/doveadm/main.c + +2021-06-10 01:09:34 +0300 Timo Sirainen (875a371693) + + doveadm: Remove doveadm_cmd_ver2.old_cmd + + +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h + +2021-06-10 01:08:16 +0300 Timo Sirainen (058f76650a) + + doveadm proxy: Convert to v2 commands + + +M src/doveadm/doveadm-proxy.c + +2021-06-10 01:03:46 +0300 Timo Sirainen (871adaab1f) + + doveadm oldstats: Convert to v2 commands + + +M src/doveadm/doveadm-oldstats.c + +2021-06-10 00:59:53 +0300 Timo Sirainen (3aef610846) + + doveadm stop/reload: Convert to v2 commands + + +M src/doveadm/doveadm-master.c + +2021-06-10 00:58:45 +0300 Timo Sirainen (59087d1dad) + + doveadm fs: Convert to v2 commands + + +M src/doveadm/doveadm-fs.c + +2021-06-10 00:45:43 +0300 Timo Sirainen (b6e92ea8fb) + + doveadm auth cache flush: Convert auth-server command to v2 + + +M src/doveadm/doveadm-auth-server.c +M src/doveadm/doveadm-auth.c + +2021-06-10 00:42:38 +0300 Timo Sirainen (af1d3d37f1) + + doveadm auth: Convert to v2 commands + + +M src/doveadm/doveadm-auth.c + +2021-06-10 00:18:17 +0300 Timo Sirainen (94734b9359) + + doveadm instance: Convert to v2 commands + + +M src/doveadm/doveadm-instance.c + +2021-06-10 00:05:28 +0300 Timo Sirainen (fc0b20f702) + + doveadm log: Convert to v2 commands + + +M src/doveadm/doveadm-log.c + +2021-06-10 00:01:00 +0300 Timo Sirainen (f8290ea73a) + + doveadm replicator: Convert to v2 commands + + +M src/doveadm/doveadm-replicator.c + +2021-06-09 23:48:10 +0300 Timo Sirainen (f1524717c6) + + doveadm config: Convert to v2 command + + +M src/doveadm/doveadm.c + +2021-06-09 23:45:51 +0300 Timo Sirainen (476dc132cb) + + doveadm exec: Convert to v2 command + + +M src/doveadm/doveadm.c + +2021-06-10 14:23:46 +0300 Timo Sirainen (938428f914) + + doveadm: Add CMD_FLAG_NO_UNORDERED_OPTIONS + + +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h + +2021-06-09 23:44:29 +0300 Timo Sirainen (8b461f612c) + + doveadm: Add CMD_FLAG_NO_OPTIONS + + This allows command to process all parameters, including parameters starting + with "-". + +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h + +2021-06-09 23:39:54 +0300 Timo Sirainen (b086c1a88b) + + doveadm: Split off doveadm_cmd_process_options() + + +M src/doveadm/doveadm-cmd.c + +2021-06-09 23:37:19 +0300 Timo Sirainen (087ec4374b) + + doveadm: Reformat doveadm-cmd.c + + +M src/doveadm/doveadm-cmd.c + +2021-06-09 23:21:27 +0300 Timo Sirainen (9f305a24c5) + + doveadm help: Convert to v2 command + + +M src/doveadm/doveadm.c + +2021-06-09 23:13:30 +0300 Timo Sirainen (7b67742aa7) + + doveadm dump: Convert to v2 command + + +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-dump.c +M src/doveadm/doveadm.c + +2021-06-09 23:10:08 +0300 Timo Sirainen (4a508ba07a) + + doveadm dump: Change doveadm_cmd_dump.cmd() API to be simpler + + +M src/doveadm/doveadm-dump-dbox.c +M src/doveadm/doveadm-dump-dcrypt-file.c +M src/doveadm/doveadm-dump-dcrypt-key.c +M src/doveadm/doveadm-dump-index.c +M src/doveadm/doveadm-dump-log.c +M src/doveadm/doveadm-dump-mailboxlog.c +M src/doveadm/doveadm-dump-thread.c +M src/doveadm/doveadm-dump.c +M src/doveadm/doveadm-dump.h +M src/doveadm/doveadm-zlib.c +M src/plugins/fts-lucene/doveadm-fts-lucene.c +M src/plugins/fts/doveadm-dump-fts-expunge-log.c + +2021-06-09 23:02:36 +0300 Timo Sirainen (ced5df32b5) + + doveadm pw: Convert to v2 command + + +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-pw.c +M src/doveadm/doveadm.c + +2021-06-09 22:55:55 +0300 Timo Sirainen (cfe3a83df7) + + doveadm mailbox mutf7: Convert to v2 command + + +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-mutf7.c + +2021-06-09 22:47:35 +0300 Timo Sirainen (07ba60c061) + + doveadm sis deduplicate/find: Convert to v2 command + + +M src/doveadm/doveadm-cmd.c +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-sis.c + +2021-06-09 22:42:54 +0300 Timo Sirainen (11439a8366) + + doveadm zlibconnect: Convert to v2 command + + +M src/doveadm/doveadm-cmd.h +M src/doveadm/doveadm-zlib.c +M src/doveadm/doveadm.c + +2021-06-09 22:39:55 +0300 Timo Sirainen (580b696a1f) + + doveadm: Code cleanup - Add doveadm_cmdline_commands_ver2[] + + +M src/doveadm/doveadm.c + +2021-06-10 16:56:06 +0300 Timo Sirainen (3d52021b2d) + + doveadm: Support building ARRAY type mail command parameters + + +M src/doveadm/doveadm-mail.c + +2021-06-10 16:55:04 +0300 Timo Sirainen (5dc7039807) + + doveadm: Fix building IP/INT64 type mail command parameters + + +M src/doveadm/doveadm-mail.c + +2021-06-10 16:51:58 +0300 Timo Sirainen (ce9ac4a9cc) + + doveadm: Split off doveadm_cmd_parse_arg() + + +M src/doveadm/doveadm-mail.c + +2020-12-03 19:20:32 +0200 Timo Sirainen (6477f9be35) + + lib: Fix assert-crash when destroying ioloop that has active context + + Normally the ioloop shouldn't have an active context at deinit, but it seems + to be possible in some situations. It's not really bad anyway, so just allow + it. + + Fixes: Panic: file ioloop.c: line 928 (io_loop_destroy): assertion failed: + (ioloop->cur_ctx == NULL) + +M src/lib/ioloop.c +M src/lib/test-ioloop.c + +2021-07-19 14:56:47 +0300 Timo Sirainen (eac71a2968) + + lib-mail: Fix memory leak in istream-header-filter + + Broken by 1c1b77dbf9a548aac788efb76973ce2d0fa6c732 + +M src/lib-mail/istream-header-filter.c + +2021-07-19 13:54:24 +0300 Timo Sirainen (5bd95c2ba9) + + lib: data-stack - t_try_realloc() - Add missing + data_stack_last_buffer_reset() call + + This fixes incorrect "buffer overflow" panics with DEBUG builds. + +M src/lib/data-stack.c + +2021-07-19 13:52:58 +0300 Timo Sirainen (7dedc453ca) + + lib: data-stack - data_stack_last_buffer_reset(() - Add comments and an + assert + + This clarifies how the function is expected to work. + +M src/lib/data-stack.c + +2021-07-12 14:26:38 +0200 Markus Valentin (4fdb040d24) + + lib-storage: Use escaped name length to calculate truncation margin + + This fixes corruption of mailbox names when the storage_name_escape_char has + been part of the parent folder name. + + Broken by 5dd81d83d8d9120ed2a74d5bd2aa62622885b49c + +M src/lib-storage/list/mailbox-list-index-iter.c + +2021-07-12 13:40:58 +0300 Aki Tuomi (14ad268aa1) + + lib-lua: Fix LIBDICT_LUA variable usage + + It needs to be appended to, not set again. Broken by + 3d0b7e9bb59e3dc41fd5a4d09832eedea7a92933. + +M src/lib-lua/Makefile.am + +2021-07-08 12:24:47 +0300 Aki Tuomi (3d0b7e9bb5) + + lib-lua: Only link libdict_lua if it's available + + +M src/lib-lua/Makefile.am + +2021-07-08 11:10:38 +0300 Aki Tuomi (b4827bc2f2) + + plugins/fts: Restore fts_indexer_cmd + + It was removed in cf114f90e0ba25c18db846ee582e3a130bd52949 and that broke + some FTS plugins. + +M src/plugins/fts/fts-indexer.c + +2021-06-22 13:28:34 +0200 Timo Sirainen (3bac871aea) + + lib-dict: Fix linking when building without Lua + + Linking didn't work on some non-Linux OSes (non-GNU linkers?) + +M src/lib-dict/Makefile.am + +2021-06-04 11:16:53 +0300 Timo Sirainen (b0a354f7a9) + + lib-compression: istream-zstd - Make sure parent stream error isn't + overwritten + + This could have happened if the parent istream failed before the zstd header + was read. Practically this didn't happen currently, because the initial + parent stream error was normally already handled by istream-decompress + before istream-zstd was even called. + +M src/lib-compression/istream-zstd.c + +2021-06-04 11:16:22 +0300 Timo Sirainen (8e3a7d9a50) + + lib-compression: istream-zlib - Fix parent stream error handling near EOF + + This happened when gz stream (including trailer) was fully read, but the + final check to see if there is a concatenated gz stream afterwards failed + due to parent istream failure. In this case the error was ignored and + istream returned success, truncating any potential concatenated istream + input. This situation was very unlikely to happen. + +M src/lib-compression/istream-zlib.c + +2021-05-27 19:34:50 +0300 Timo Sirainen (1c1b77dbf9) + + lib-mail: Fix istream-header-filter snapshotting + + +M src/lib-mail/istream-header-filter.c +M src/lib-mail/test-istream-header-filter.c + +2021-06-17 19:55:56 +0300 Timo Sirainen (25e0619c01) + + lib: Add istream_snapshot.free() to allow more complex snapshots + + +M src/lib/istream-private.h +M src/lib/istream.c + +2021-06-15 12:21:22 +0200 Markus Valentin (f8c0c372a9) + + lib-storage: Make use of MAIL_INDEX_VIEW_SYNC_FLAG_2ND_INDEX + + +M src/lib-storage/index/index-sync-pvt.c + +2021-06-15 12:19:00 +0200 Markus Valentin (1d9b391105) + + lib-index: Introduce MAIL_INDEX_VIEW_SYNC_FLAG_2ND_INDEX + + This flag is used to make sure secondary views flags-index can work properly + without emitting warnings about inconsistency. If an inconsistency is + encountered fix it by fully syncing. + +M src/lib-index/mail-index-view-sync.c +M src/lib-index/mail-index.h + +2021-06-15 08:59:17 +0200 Markus Valentin (c1f2323e15) + + Revert "lib-storage: Always fix inconsistency when syncing private flags + index" + + This reverts commit 986d9cbbecffd836d977b6ad956b04e3ca606677. + + This is reverted because storing flags on private indexes no longer send + untagged replies. + +M src/lib-storage/index/index-sync-private.h +M src/lib-storage/index/index-sync-pvt.c +M src/lib-storage/index/index-sync.c +M src/lib-storage/index/index-transaction.c + +2021-07-01 10:46:05 +0200 Markus Valentin (9183e2b3af) + + acl: Ignore acls in acl_lookup_dict_rebuild_add_backend if ignore_acls is + set + + In case an namespace has been configured to ignore ACLs also respect that + when acl_lookup_dict_rebuild is called. + + Co-Authored-By: Vincent Brillault + +M src/plugins/acl/acl-lookup-dict.c + +2021-06-02 00:40:19 +0200 Stephan Bosch (357ff0b35b) + + lib-smtp: test-smtp-payload - Set all timeouts to CLIENT_PROGRESS_TIMEOUT. + + This prevents connect and idle timeouts from triggering earlier than the + progress timeout. + +M src/lib-smtp/test-smtp-payload.c + +2021-06-22 11:52:02 -0600 Michael M Slusarz (c5edbe6007) + + imap: PREVIEW responses need trailing space + + 2.3.15 regression + + Before 2.3.15, there was this same buggy behavior in error cases; 2.3.15 + moved that buggy behavior to the success code path + + DOP-2463 + +M src/imap/imap-fetch-body.c + +2021-06-14 23:46:48 +0300 Timo Sirainen (5fbff5f80d) + + doveadm-server: Add log prefix to logs written to client + + +M src/doveadm/client-connection-tcp.c + +2021-06-14 23:43:11 +0300 Timo Sirainen (8f2033be24) + + doveadm-server: Simplify writing log output to client + + +M src/doveadm/client-connection-tcp.c + +2021-06-14 20:14:13 +0200 Timo Sirainen (c4acd0ce0e) + + lib: Fix log prefix in internal handler when log handler has been overridden + + Adds back mail_log_prefix to doveadm mail commands when doveadm-server was + accessed via TCP. + + Originally broken by c9dd53f7180a78668cbc1e6eb34d5b1722beccb9 + +M src/lib/failures.c + +2021-06-04 23:00:21 +0100 Siavash Tavakoli (60cbb2959c) + + dict-file: Make sure home_dir doesn't change during operations + + file_dict is initialized for a specific user. Keep record of the user's + home_dir and check for all dict operations that the user did not change. + +M src/lib-dict/dict-file.c + +2021-06-02 16:17:22 +0100 Siavash Tavakoli (ebc92f1ba7) + + global: Remove dict_settings.home_dir + + Allows dict to be shared across users. Dict operations use + dict_op_settings.home_dir if set. + +M src/lib-dict/dict-file.c +M src/lib-dict/dict.h +M src/lib-storage/index/index-attribute.c +M src/plugins/last-login/last-login-plugin.c +M src/plugins/notify-status/notify-status-plugin.c +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota.c + +2021-05-26 15:18:20 +0100 Siavash Tavakoli (bdcdd37fb0) + + dict: Split protocol command arguments in dict_command_input() + + Instead of duplicating code and splitting in each command functions + separately. + +M src/dict/dict-commands.c + +2021-05-26 01:41:51 +0100 Siavash Tavakoli (e222a33dc1) + + lib-dict: Make sure username is valid as well when checking key prefix + + If this is a private key, username must be non-empty. + +M src/lib-dict/dict.c + +2021-05-24 12:54:58 +0100 Siavash Tavakoli (4c15dc4ede) + + dict: Remove dict_connection.username and dict_settings.username + + - dict should be user agnostic. dict operations have username. + - same for dict connection + - also removes username from dict process' log prefix + +M src/auth/db-dict.c +M src/auth/db-oauth2.c +M src/dict/dict-connection.c +M src/dict/dict-connection.h +M src/doveadm/doveadm-dict.c +M src/lib-dict-backend/test-dict-sql.c +M src/lib-dict-extra/dict-fs.c +M src/lib-dict-extra/test-dict-fs.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/lib-dict/test-dict-client.c +M src/lib-fs/fs-dict.c +M src/lib-oauth2/test-oauth2-jwt.c +M src/lib-storage/index/index-attribute.c +M src/plugins/acl/acl-lookup-dict.c +M src/plugins/last-login/last-login-plugin.c +M src/plugins/notify-status/notify-status-plugin.c +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota.c + +2021-06-03 19:59:23 +0100 Siavash Tavakoli (037442cde7) + + dict: Add username field for command events + + To prepare for connection username removal in next commit. Instead of adding + username field for the parent event, add it in command events. + + Commands can now be run for different users. Having the same username field + as the one used in initialization can be wrong. + +M src/dict/dict-commands.c +M src/dict/dict-connection.c + +2021-05-24 11:47:15 +0100 Siavash Tavakoli (a9e6e57a73) + + dict-client: Do not send username in initial handshake + + Dict commands that need username have it included in their arguments now. + +M src/lib-dict/dict-client.c + +2021-05-24 11:58:44 +0100 Siavash Tavakoli (2af85d6cbc) + + dict-fs: Remove unused fs_dict.username + + +M src/lib-dict-extra/dict-fs.c + +2021-05-24 11:58:02 +0100 Siavash Tavakoli (88636cd5a1) + + dict-redis: Remove unused redis_dict.username + + +M src/lib-dict/dict-redis.c + +2021-05-24 11:57:18 +0100 Siavash Tavakoli (f7da270894) + + dict-memcached-ascii: Remove unused memcached_ascii_dict.username + + +M src/lib-dict/dict-memcached-ascii.c + +2021-05-24 11:56:29 +0100 Siavash Tavakoli (e2a74dab49) + + dict-sql: Remove unused sql_dict.username + + +M src/lib-dict-backend/dict-sql-private.h +M src/lib-dict-backend/dict-sql.c + +2021-05-24 11:54:56 +0100 Siavash Tavakoli (38ae540aa5) + + dict-ldap: Remove unused ldap_dict.username + + +M src/lib-dict-backend/dict-ldap.c + +2021-06-03 21:27:31 +0100 Siavash Tavakoli (6c94259f8f) + + dict: Add dict_event_create + + Helper function for dict events. If dict_op_settings has username set, adds + it as a field. + +M src/lib-dict/dict.c + +2021-06-03 21:18:03 +0100 Siavash Tavakoli (843cb951df) + + dict-client: Send username in commands + + Lookup, iterate_begin, and transaction_begin need username. This bumps dict + protocol's major version to 3. + +M src/lib-dict/dict-client.c +M src/lib-dict/dict-client.h + +2021-06-03 21:16:22 +0100 Siavash Tavakoli (bb6c727856) + + dict-redis: Use dict_op_settings to get full key + + Switch from dict.username to dict_op_settings.username. Also, ensure that + username is escaped. + +M src/lib-dict/dict-redis.c + +2021-06-03 21:14:51 +0100 Siavash Tavakoli (3d78c522f7) + + dict-memcached-ascii: Use dict_op_settings to get full key + + Switch from dict.username to dict_op_settings.username. + +M src/lib-dict/dict-memcached-ascii.c + +2021-06-03 21:12:27 +0100 Siavash Tavakoli (f4d43cf907) + + dict-fs: Use dict_op_settings to get full key + + Switch from dict.username to dict_op_settings.username. + +M src/lib-dict-extra/dict-fs.c + +2021-06-03 20:58:05 +0100 Siavash Tavakoli (6ed788ca21) + + dict: Use dict_op_settings in backends + + - Use dict_op_settings in dict API functions + - forward the settings object to backends for dict lookup/iterate + - Update backends to use dict_op_settings + +M src/lib-dict-backend/dict-cdb.c +M src/lib-dict-backend/dict-ldap.c +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-extra/dict-fs.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-fail.c +M src/lib-dict/dict-file.c +M src/lib-dict/dict-memcached-ascii.c +M src/lib-dict/dict-memcached.c +M src/lib-dict/dict-private.h +M src/lib-dict/dict-redis.c +M src/lib-dict/dict.c + +2021-06-03 18:31:57 +0100 Siavash Tavakoli (8d69e81674) + + notify-status: Initialize dict_op_settings for dict operations + + +M src/plugins/notify-status/notify-status-plugin.c + +2021-06-03 18:32:50 +0100 Siavash Tavakoli (b87665654f) + + last-login: Initialize dict_op_settings for dict operations + + +M src/plugins/last-login/last-login-plugin.c + +2021-06-03 18:30:17 +0100 Siavash Tavakoli (88f5f42541) + + quota: Initialize dict_op_settings for dict operations + + +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota.c + +2021-06-03 19:32:26 +0100 Siavash Tavakoli (42052d71f3) + + dict: Initialize dict_op_settings for dict operations + + +M src/dict/dict-commands.c + +2021-06-03 18:33:21 +0100 Siavash Tavakoli (b70da6c60b) + + acl: Initialize dict_op_settings for dict lookup + + +M src/plugins/acl/acl-lookup-dict.c + +2021-06-03 18:34:26 +0100 Siavash Tavakoli (737e107ef7) + + lib-oauth2: Initialize dict_op_settings for dict operations + + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2021-06-03 18:41:14 +0100 Siavash Tavakoli (683c314667) + + lib-dict: lua: Initialize dict_op_settings for dict operations + + - Add new mandatory argument for lookup, set, and transaction_begin. + - Use the username to initialize dict_op_settings passed to lib-dict API + +M src/lib-dict/dict-iter-lua.c +M src/lib-dict/dict-lua.c +M src/lib-dict/dict-txn-lua.c + +2021-07-01 20:39:41 +0100 Siavash Tavakoli (b3ab76ff1d) + + lib-dict-extra: test-dict-fs: Initialize dict_op_settings for dict + operations + + +M src/lib-dict-extra/test-dict-fs.c + +2021-06-03 18:39:39 +0100 Siavash Tavakoli (b150ee039c) + + lib-dict-backend: test-dict-sql: Initialize dict_op_settings for dict + operations + + +M src/lib-dict-backend/test-dict-sql.c + +2021-06-03 18:38:50 +0100 Siavash Tavakoli (051d8cbe36) + + lib-dict: test-dict-client: Initialize dict_op_settings for dict operations + + +M src/lib-dict/test-dict-client.c + +2021-06-03 18:36:04 +0100 Siavash Tavakoli (7fce91db18) + + lib-storage: Initialize dict_op_settings for dict operations + + +M src/lib-storage/index/index-attribute.c + +2021-06-03 18:35:28 +0100 Siavash Tavakoli (f2083c0b5c) + + lib-fs: Initialize dict_op_settings for dict operations + + +M src/lib-fs/fs-dict.c + +2021-06-03 18:13:31 +0100 Siavash Tavakoli (11046766af) + + auth: userdb-dict: Initialize dict_op_settings for dict iterate + + +M src/auth/userdb-dict.c + +2021-06-03 18:11:47 +0100 Siavash Tavakoli (09e89ca08a) + + auth: db-dict: Initialize dict_op_settings for dict lookup + + +M src/auth/db-dict.c + +2021-06-03 12:53:08 +0100 Siavash Tavakoli (8ec65b7e0c) + + doveadm dict: Initialize & use dict_op_settings for dict commands + + Sets the username in cmd_dict_init_full and use the settings struct for dict + operations. + +M src/doveadm/doveadm-dict.c + +2021-06-03 00:06:44 +0100 Siavash Tavakoli (64719ad090) + + lib-storage: Add mail_user.dict_op_set and mail_user_get_dict_op_settings() + + Used to initialize or obtain dict_op_settings for the user. + +M src/lib-storage/mail-user.c +M src/lib-storage/mail-user.h + +2021-06-04 15:39:05 +0100 Siavash Tavakoli (aceb659c98) + + lib-storage: mail-user: Clarify mail_user_get_home() usage string + + Explicitly comment about returned string lifetime. + +M src/lib-storage/mail-user.h + +2021-05-18 17:52:55 +0100 Siavash Tavakoli (5b579636a4) + + dict: Optionally accept username in lookup/iterate/begin dict protocol + commands + + Only an optional field, don't actually use it. + +M src/dict/dict-commands.c + +2021-05-28 11:57:39 +0100 Siavash Tavakoli (f976f4ac89) + + dict-file: Remove file_dict_iterate_path struct + + No need for the struct since support for multi-path iterate is removed. So + path and path length can be merged with file_dict_iterate_context. + +M src/lib-dict/dict-file.c + +2021-05-26 13:47:50 +0100 Siavash Tavakoli (32e8bd5b5a) + + dict backends: Remove multi-path handling code in dict iteration + + With mutli-path iteration support being dropped from dict protocol, these + can be cleaned up. + +M src/lib-dict-backend/dict-cdb.c +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-extra/dict-fs.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-fail.c +M src/lib-dict/dict-file.c +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c + +2021-05-26 12:15:06 +0100 Siavash Tavakoli (cbc81b4471) + + dict: Drop support for multi-path iteration in dict protocol + + Remove dict_iterate_init_multiple() since it is not used anywhere. Also drop + support in dict protocol to read multiple paths. + +M src/dict/dict-commands.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h + +2021-05-18 01:50:03 +0100 Siavash Tavakoli (ecc4985151) + + lib-dict: Add dict_op_settings_dup() and dict_op_settings_private_free() + + - dict_op_settings_dup() creates a copy of dict_op_settings into a new + struct dict_dop_settings_private. + - dict_op_settings_private_free() frees the memory for copied object. + +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c + +2021-05-03 15:09:49 +0100 Siavash Tavakoli (4aeba6af64) + + lib-dict: Add dict_op_settings parameter for dict_iterate_init() + + Only adds the parameter, doesn't use it. + +M src/auth/userdb-dict.c +M src/doveadm/doveadm-dict.c +M src/lib-dict-backend/test-dict-sql.c +M src/lib-dict/dict-iter-lua.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/lib-dict/test-dict-client.c +M src/lib-fs/fs-dict.c +M src/lib-storage/index/index-attribute.c +M src/plugins/acl/acl-lookup-dict.c + +2021-05-03 15:09:01 +0100 Siavash Tavakoli (8c0a16627e) + + lib-dict: Add dict_op_settings parameter for dict_transaction_begin() + + Only adds the parameter, doesn't use it. + +M src/dict/dict-commands.c +M src/doveadm/doveadm-dict.c +M src/lib-dict-backend/test-dict-sql.c +M src/lib-dict-extra/test-dict-fs.c +M src/lib-dict/dict-txn-lua.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/lib-dict/test-dict-client.c +M src/lib-fs/fs-dict.c +M src/lib-oauth2/test-oauth2-jwt.c +M src/lib-storage/index/index-attribute.c +M src/plugins/acl/acl-lookup-dict.c +M src/plugins/last-login/last-login-plugin.c +M src/plugins/notify-status/notify-status-plugin.c +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota.c + +2021-05-03 13:42:56 +0100 Siavash Tavakoli (c840870249) + + lib-dict: Add dict_op_settings + + Used for dict operations. Currently username & home_dir are used. Also, + change dict_lookup() to accept a parameter of this type but don't actually + use it. + +M src/auth/db-dict.c +M src/dict/dict-commands.c +M src/doveadm/doveadm-dict.c +M src/lib-dict-backend/test-dict-sql.c +M src/lib-dict-extra/test-dict-fs.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-lua.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/lib-dict/test-dict-client.c +M src/lib-fs/fs-dict.c +M src/lib-oauth2/oauth2-jwt.c +M src/lib-storage/index/index-attribute.c +M src/plugins/quota/quota-dict.c + +2021-05-03 12:15:54 +0100 Siavash Tavakoli (53fa6616c5) + + lib-dict: Remove dict_settings.value_type + + It was originally added to dict-db and no other backend uses it. With + dict-db removed, there is no need to keep it. + +M src/auth/db-oauth2.c +M src/dict/dict-connection.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict.h +M src/lib-oauth2/test-oauth2-jwt.c + +2021-05-12 12:54:30 +0100 Siavash Tavakoli (08fee75254) + + dict-client: Escape username and dict uri in handshake HELLO message + + +M src/lib-dict/dict-client.c + +2021-04-30 14:42:46 +0100 Siavash Tavakoli (d5acb577c9) + + lib-dict-backen: Drop unused dict-db + + +M src/lib-dict-backend/Makefile.am +D src/lib-dict-backend/dict-db.c + +2021-06-24 12:56:05 -0400 Josef 'Jeff' Sipek (5a7c7869c7) + + virtual: Expunge old emails if backend box uidvalidity changed + + +M src/plugins/virtual/virtual-storage.h +M src/plugins/virtual/virtual-sync.c + +2021-06-14 23:28:48 +0300 Timo Sirainen (9ea5d36197) + + doveadm-server: Don't return two error lines if a command fails + + This normally didn't affect doveadm client usage, but it did break reply + matching when multiple usernames were handled by a single command (e.g. + wildcard users). + +M src/doveadm/client-connection-tcp.c + +2020-12-10 10:44:42 +0200 Timo Sirainen (e4ab282d56) + + lib-http: test-http-client-errors - Don't rely on sleeps + + Use the notification signal API instead. Also it's only one test (group) + that needs to do this. + +M src/lib-http/test-http-client-errors.c + +2021-06-18 14:19:36 +0300 Timo Sirainen (ec04bc903e) + + lib-test: Add notification signal send/wait API + + This allows a simple way for child/parent processes to communicate when + they're ready. SIGHUP signal is reserved for this. + +M src/lib-test/test-subprocess.c +M src/lib-test/test-subprocess.h + +2020-12-10 10:54:25 +0200 Timo Sirainen (6192e2a196) + + doveadm batch: Fix assert-crash that happened when it was attempted to be + used + + Fixes: Panic: file mail-storage.c: line 1067 (mailbox_set_reason): assertion + failed: (reason != NULL) + +M src/doveadm/doveadm-mail-batch.c + +2021-06-25 14:52:11 +0200 Markus Valentin (d2d021efe0) + + lib-fs: metawrap - Fix handling empty file + + As empty files are already closed when fs-metawrap attempts to append + metadata there have been problems with size calculation. Fix this by relying + on the same mechanism as if metadata changed during write. + + This recreates metadata and keeps old body. This fixes an issue when writing + empty mails to cache (failed: Cached message size larger than expected). + + This was introduced by 03e102ddccaae9e944c503d4269de755731798e8a + +M src/lib-fs/fs-metawrap.c + +2021-06-25 14:28:57 +0200 Markus Valentin (cab617276a) + + lib-fs: fs-metawrap - Expect fs_stat to return size 0 for empty file + + +M src/lib-fs/test-fs-metawrap.c + +2021-06-14 12:47:15 +0300 Timo Sirainen (f0256e3d60) + + NEWS: Updates for v2.3.15 + + +M NEWS + +2021-05-24 14:03:57 +0300 Aki Tuomi (7ad5753566) + + NEWS: Add news for 2.3.14.1 + + +M NEWS + +2021-05-22 00:16:38 +0200 Stephan Bosch (bcdbf445a9) + + lib-smtp: smtp-server-connection - Fix STARTTLS command injection + vulnerability. + + The input handler kept reading more commands even though the input was + locked by the STARTTLS command, thereby causing it to read the command + pipelined beyond STARTTLS. This causes a STARTTLS command injection + vulerability. + +M src/lib-smtp/smtp-server-cmd-starttls.c +M src/lib-smtp/smtp-server-connection.c + +2021-06-08 09:13:25 +0300 Aki Tuomi (9b04e6fbfb) + + lib-dict-extra: dict-fs - Escape unsafe paths + + Change any path components that are `.` or `..` to `...` and `....`. + Prevents path traversal attacks. + +M src/lib-dict-extra/Makefile.am +M src/lib-dict-extra/dict-fs.c +A src/lib-dict-extra/test-dict-fs.c + +2021-06-08 09:04:21 +0300 Aki Tuomi (15682a20d5) + + lib-oauth2: Do not escape '.' + + This is not really needed and just makes things difficult. + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2021-05-03 09:58:29 +0300 Aki Tuomi (368adea6d9) + + lib-oauth2: Add missing test_begin/test_end to token escape + + +M src/lib-oauth2/test-oauth2-jwt.c + +2021-04-14 19:17:30 +0300 Aki Tuomi (dde02b27df) + + lib-oauth2: test-oauth2-jwt - Fix linkage for openssl + + Without whole archive option ssl_iostream_unref isn't included in linkage, + which will prevent libdcrypt from loading openssl backend. + +M src/lib-oauth2/Makefile.am + +2020-11-19 19:55:42 +0200 Aki Tuomi (137558d31c) + + lib-oauth2: Ensure azp is escaped too + + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2021-04-14 13:47:16 +0300 Aki Tuomi (cf8f670629) + + lib-oauth2: Add test for token escape + + +M src/lib-oauth2/test-oauth2-jwt.c + +2021-04-14 14:12:16 +0300 Aki Tuomi (8b716828c4) + + lib-oauth2: Improve identifier escaping function + + +M src/lib-oauth2/oauth2-jwt.c + +2021-04-10 17:54:45 +0300 Aki Tuomi (1db66e3950) + + lib-oauth2: Move identifier escaping to own function + + +M src/lib-oauth2/oauth2-jwt.c + +2021-03-25 15:36:49 +0200 Timo Sirainen (fa92b1a362) + + lib-storage: Sync mailbox if autoexpunging finds mails that are already + expunged + + The syncing should remove the mails from the index. + +M src/lib-storage/mail-autoexpunge.c + +2021-03-25 15:34:14 +0200 Timo Sirainen (0e8844adc3) + + lib-storage: Fix infinite loop in autoexpunging if the mails are already + expunged + + This happens if the mails exist in the index, but mail_get_save_date() fails + with MAIL_ERROR_EXPUNGED. + +M src/lib-storage/mail-autoexpunge.c + +2021-05-31 14:48:42 +0300 Aki Tuomi (8609b88e86) + + plugins/fts: Use event logging + + +M src/plugins/fts/fts-indexer.c + +2021-05-26 13:55:52 +0300 Aki Tuomi (cf114f90e0) + + plugins/fts: fts-indexer - Use connection.c functions + + +M src/plugins/fts/fts-indexer.c + +2021-05-31 19:31:35 +0300 Aki Tuomi (43d18b2d3f) + + plugins/fts: fts-indexer - Move fts_indexer_init to end of file + + Simplifies next commit + +M src/plugins/fts/fts-indexer.c + +2021-05-26 13:54:56 +0300 Aki Tuomi (1510536887) + + plugins/fts: fts-indexer - Use connection structures + + +M src/plugins/fts/fts-indexer.c + +2021-05-06 14:55:55 +0300 Aki Tuomi (b832f6c3c1) + + indexer: worker - Fix busy/free status + + Determining whether worker is free or not should be determined using + worker_connection_is_busy, not whether there are connections in the list. + + A worker connection is busy when it has a request. + +M src/indexer/indexer.c +M src/indexer/worker-pool.c + +2021-05-06 12:54:15 +0300 Aki Tuomi (f62a258493) + + indexer: indexer-client - Use connection.c functions + + +M src/indexer/indexer-client.c +M src/indexer/indexer-client.h +M src/indexer/indexer.c + +2021-05-06 12:41:39 +0300 Aki Tuomi (0273caf1b9) + + indexer: indexer-client - Use connection structure + + +M src/indexer/indexer-client.c + +2021-05-06 12:08:39 +0300 Aki Tuomi (0dfa2531ae) + + indexer: indexer-worker - Use event logging + + +M src/indexer/master-connection.c + +2021-05-06 12:03:16 +0300 Aki Tuomi (bf42ae1ae7) + + indexer: indexer-worker: Use connection.c functions + + +M src/indexer/indexer-worker.c +M src/indexer/master-connection.c +M src/indexer/master-connection.h + +2021-05-06 11:42:37 +0300 Aki Tuomi (2f5494df0a) + + indexer: indexer-worker: Use connection structure + + +M src/indexer/master-connection.c + +2021-05-06 11:21:43 +0300 Aki Tuomi (990b69f195) + + indexer: worker-connection - Use connection.c functions + + +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c + +2021-05-06 10:59:24 +0300 Aki Tuomi (1ed0c8be75) + + indexer: worker-connection - Prepare for using connection.c + + +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c + +2021-05-06 10:56:40 +0300 Aki Tuomi (57317458ce) + + indexer: worker-pool - Use connection_list + + +M src/indexer/worker-pool.c + +2021-05-06 10:49:23 +0300 Aki Tuomi (61f8942012) + + indexer: worker-pool - Remove unused last_use + + +M src/indexer/worker-pool.c + +2021-05-06 10:29:23 +0300 Aki Tuomi (4225108434) + + indexer: worker-connection - Use connection.h structures + + +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h +M src/indexer/worker-pool.c +M src/indexer/worker-pool.h + +2021-05-06 10:11:54 +0300 Aki Tuomi (d76761698a) + + indexer: worker-connection - Move constructor further down + + Simplifies next commit + +M src/indexer/worker-connection.c + +2021-05-06 10:11:24 +0300 Aki Tuomi (9aadd7fa03) + + Reformat worker-connection.c + + +M src/indexer/worker-connection.c + +2021-05-25 10:38:46 +0300 Aki Tuomi (7fcf330135) + + lib: lib-event - Copy ru_last when making passthrough event + + Otherwise user_cpu_usecs does not get added to the sent events. + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-05-06 14:29:03 +0300 Aki Tuomi (da607df02a) + + master: Fix idle-kill for processes with a single short-lived client + + lib-master sends unimportant service status updates to master only once per + second when client_limit>1, because within that 1 second the available + client count may have already changed many times. Normally this is fine, but + there's a problem with the initial client: + + * The client connection launches a new process + * The process sends the initial status notification with available_count=MAX + * The client connection is handled, but because the status notification was + just sent, the update won't be sent until 1 second later + * The client disconnects within the 1 second + * The available_count is again MAX, so no status notification is sent + + In this situation the master process never created the idle-kill timeout. + Usually the following clients will cause a status notification to be sent, + but if there was only the one client then this process won't be idle-killed. + Fix the situation so that the idle-kill timeout is created already by the + initial status notification. + +M src/master/service-monitor.c + +2021-06-03 19:04:26 +0300 Timo Sirainen (bb618563b7) + + lib: Add array_foreach_reverse[_modifiable]() + + This is especially useful when deleting multiple elements inside the loop. + +M src/lib/array.h +M src/lib/test-array.c + +2021-06-03 16:50:39 +0300 Timo Sirainen (df1b4b8750) + + lib: Don't use special code for i_unreached() with STATIC_CHECKER + + This was done originally to help scan-build, but this is no longer + necessary. Also actually running code where __builtin_unreachable() was + reached produced (very weird) undefined behavior. + + Reverts e2e9ea6da9f3db5fd7fe467db79232d20d03832f + +M src/lib/macros.h + +2021-06-03 16:48:36 +0300 Timo Sirainen (ecc984350e) + + Makefile.am: Update configure parameters for scan-build + + Especially add --enable-static-checker. + +M Makefile.am + +2021-06-04 12:46:53 +0300 Timo Sirainen (70defb0fb7) + + lib-imap: imap-parser - Parse literal size using as same algorithm as + str_parse*(). + + This prevents wrapping the integer value and fixes an ubsan complaint. + + Based on Stephan's similar patch in managesieve-parser. + +M src/lib-imap/imap-parser.c + +2021-06-04 12:45:08 +0300 Timo Sirainen (71e1d599ed) + + lib-imap: imap-parser - Fix 8 bit atom check to use unsigned char. + + +M src/lib-imap/imap-parser.c + +2020-11-20 11:56:41 +0200 Timo Sirainen (605f65f8c1) + + lib-http: Add http-client category to client events + + +M src/lib-http/http-client.c + +2021-06-02 12:39:39 +0200 Markus Valentin (6b2963fe81) + + acl: Ignore acls in acl_mailbox_right_lookup if ignore_acls is set + + In case an namespace has been configured to ignore ACLs make sure that also + happens for acl_mailbox_right_lookup. + +M src/plugins/acl/acl-mailbox.c + +2021-06-01 13:10:23 +0200 Markus Valentin (d2a85c0441) + + acl: If acl_ignore_namespace is set acl_backend can be NULL + + Allow an uninitialized acl backend when ignore_acls is set. + +M src/plugins/acl/acl-mailbox.c + +2021-05-25 20:03:53 +0300 Timo Sirainen (2d676b0007) + + lib-mail: Add MESSAGE_PART_FLAG_OVERFLOW to MIME parts that reached parsing + limits + + This allows callers to find out which MIME parts were properly parsed. + +M src/lib-mail/message-parser.c +M src/lib-mail/message-part.h +M src/lib-mail/test-message-parser.c + +2021-04-29 17:00:47 +0300 Timo Sirainen (9d21af067f) + + imap: copy: Abort if client disconnects during COPY + + Since the client didn't receive the COPY tagged reply, it doesn't know + whether the COPY succeeded or not. This likely causes it to try the COPY + again and duplicate the mails. + +M src/imap/cmd-copy.c + +2021-05-19 05:56:13 -0600 Splintermail Dev (e903c76ef3) + + imap: imap-sync - Fix VANISHED response with UID=1 + + Fixes a bug introduced in 4eb3f6f27, where a UID EXPUNGE 1 command resulted + in a VANSIHED 0:1 response, which is invalid IMAP syntax + (sequence sets must have nonzero values). + +M src/imap/imap-sync.c + +2021-05-17 12:13:16 +0300 Aki Tuomi (0cb2ec40a4) + + fts: Do not consider arbitrary headers with 8-bit data as language-specific + + If we do stemming etc processing for arbitrary headers, they might become + impossible to find in subsequent searches due to stemming. + + This practically breaks e.g. From/To header searches with non-ascii names. + +M src/plugins/fts/fts-build-mail.c + +2020-03-09 11:11:04 +0200 Timo Sirainen (c38df6196d) + + lib: DEBUG: Fix potential crash in handling "Growing data stack" debug + message + + This could have only happened when data_stack_grow event was enabled and + when --enable-devel-checks was used. + +M src/lib/data-stack.c +M src/lib/test-data-stack.c + +2021-05-27 11:18:05 +0300 Timo Sirainen (4784a79d09) + + lib: test-data-stack: Run each test with the same data stack state + + +M src/lib/test-data-stack.c + +2021-05-21 16:59:17 +0300 Timo Sirainen (b0fd5705af) + + lib-lua: Delay running Lua script until dlua_script_init() + + This allows the caller to register globals before running the script. + +M src/lib-lua/dlua-script.c +M src/lib-lua/dlua-script.h + +2021-05-21 16:58:01 +0300 Timo Sirainen (f45c32c968) + + lib-lua: Move finalizing event and setting linked list to + dlua_create_script() + + There's no need to delay them until dlua_script_create_finish(). + +M src/lib-lua/dlua-script.c + +2021-05-21 17:48:48 +0300 Timo Sirainen (f985653670) + + lib-lua: Update dlua_script_create_*() comment + + Reusing existing scripts wasn't actually implemented. + +M src/lib-lua/dlua-script.h + +2021-05-21 17:06:37 +0300 Timo Sirainen (67c7c1aaae) + + lib-lua: dlua_script_init() - Always return -1 if script_init() fails + + The previous behavior was to forward the script_init() return value to the + caller. This was somewhat unexpected behavior. + +M src/lib-lua/dlua-script.c + +2021-05-31 11:33:40 +0300 Timo Sirainen (2b508d396c) + + lib-storage: dlua_register_mail_storage() - Fix popping dlua_dovecot in Lua + stack + + +M src/lib-storage/mail-storage-lua.c + +2021-05-07 20:37:02 +0300 Timo Sirainen (c8ac1fd03b) + + lib-storage: Fix corrupted cache when adding attachment keywords + + If IMAP BODYSTRUCTURE parsing fails, it means the BODYSTRUCTURE doesn't + match the MIME parts. This likely means that one or both of them are + corrupted. Handle this by deleting the email from cache, so this error won't + keep repeating. + +M src/lib-storage/mail.c + +2021-05-07 20:28:03 +0300 Timo Sirainen (bbcf91c5d6) + + lib-storage: Don't log error if attachment flags couldn't be set due to + missing cache + + Ever since 194dcaa65cdd247393633f2daa4b40fd12985440 missing attachment + keywords have been attempted to be automatically added if all the necessary + fields are in dovecot.index.cache. However, if mime.parts wasn't in the + cache an error was unnecessarily logged. + + Fixes: Error: Failed to add attachment keywords: mail_get_parts() failed: + Mail field not cached + +M src/lib-storage/mail.c + +2021-05-21 13:53:02 +0200 Markus Valentin (2480f7bd2c) + + imap-acl: In case mailbox name is "" set it to INBOX for shared namespaces + + To prevent proxying ACL commands with mailbox "" replace it with "INBOX" + when used with shared namespaces. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 16:09:25 +0200 Markus Valentin (bfde81138a) + + imapc: Extract imapc_mailbox_name_equals from imapc_untagged_status + + +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-05-20 16:03:12 +0200 Markus Valentin (b58ac1f607) + + imap-acl: Replace mailbox_open_as_admin with mailbox_open_allocated_as_admin + + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-20 14:27:46 +0200 Markus Valentin (becb0ee0d5) + + imap-acl: Allow LISTRIGHT replies without opening as admin + + As the reply is hardcoded there is no need to proxy the ACL command to a + remote backend in case imapc_feature "acl" is enabled. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-19 15:12:35 +0200 Markus Valentin (8d994ed413) + + imap-acl: Implement proxying commands to an imapc location for DELETEACL + + Before calling imap_acl_cmd_deleteacl in cmd_deleteacl the new code checks + if the command should be proxied and if so, does the proxying. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-19 15:11:40 +0200 Markus Valentin (52333bdb22) + + imap-acl: Implement proxying commands to an imapc location for SETACL + + Before calling imap_acl_cmd_setacl in cmd_setacl the new code checks if the + command should be proxied and if so, does the proxying. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-19 15:09:24 +0200 Markus Valentin (7a6dda9cef) + + imap-acl: Implement proxying commands to an imapc location for GETACL + + Before calling imap_acl_cmd_getacl in cmd_getacl the new code checks if the + command should be proxied and if so, does the proxying. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 16:59:31 +0200 Markus Valentin (d64123e856) + + imap-acl: Extract imap_acl_cmd_deleteacl from cmd_deletacl + + This change makes acl_mailbox_open_allocated_as_admin called later which is + necessary for the following proxying IMAP ACL changes. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 16:45:13 +0200 Markus Valentin (98f1a2a6e4) + + imap-acl: Extract imap_acl_cmd_setacl from cmd_setacl + + This change makes acl_mailbox_open_allocated_as_admin called later which is + necessary for the following proxying IMAP ACL changes. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 16:29:10 +0200 Markus Valentin (f583ef8991) + + imap-acl: Extract imap_acl_cmd_getacl from cmd_getacl + + This change makes acl_mailbox_open_allocated_as_admin called later which is + necessary for the following proxying IMAP ACL changes. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-19 14:52:36 +0200 Markus Valentin (5a7cf68dfd) + + imap-acl: Implement proxying commands to an imapc location for MYRIGHTS + + Introduce the needed changes to proxy imap-acl commands to a remote backend + using imap-client. + + Before calling imap_acl_cmd_myrights in cmd_myrights the new code checks if + the command should be proxied and if so, does the proxying. + +M src/plugins/imap-acl/Makefile.am +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 12:40:55 +0200 Markus Valentin (c923bd0f75) + + imap-acl: Add imapc_acl_get_mailbox_error + + Allows to retrieve full mailbox error. + +M src/plugins/imap-acl/Makefile.am +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-25 11:19:47 +0200 Markus Valentin (f2e0cdfc9c) + + imap-acl: Split off imap_acl_cmd_myrights from cmd_myrights + + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-20 13:47:55 +0200 Markus Valentin (358432fba5) + + imap-acl: Split acl_mailbox_open_as_admin + + This allows easier implementation of the imap-acl proxying. + +M src/plugins/imap-acl/imap-acl-plugin.c + +2021-05-20 23:21:10 +0200 Markus Valentin (c963be712f) + + imap-acl: Add imap_acl_storage with module context + + +M src/plugins/imap-acl/imap-acl-plugin.c +M src/plugins/imap-acl/imap-acl-plugin.h + +2021-05-25 12:38:50 +0200 Markus Valentin (7f7a39bcb1) + + imapc: Add imapc_mail_error_to_resp_text_code to access error msg by enum + + +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-05-26 10:31:26 +0200 Markus Valentin (fa47e36587) + + imapc: Change function signature prefix to imapc_resp_text_code_parse + + +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-05-20 23:18:30 +0200 Markus Valentin (07e2f39e5c) + + imapc: Add imapc_storage_client_unregister_untagged function + + +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-05-18 16:26:46 +0200 Markus Valentin (885794cbce) + + imapc: Add imapc_features=acl + + In order to allow proxying IMAP ACL commands to a remote backend + +M src/lib-storage/index/imapc/imapc-settings.c +M src/lib-storage/index/imapc/imapc-settings.h + +2021-05-21 19:23:57 +0200 Timo Sirainen (67c08cfc9b) + + lib: test-event-filter-*: Hide details of tests unless they fail + + This removes ~14k lines of output from test-lib run. + +M src/lib/test-event-filter-expr.c +M src/lib/test-event-filter-merge.c +M src/lib/test-event-filter-parser.c + +2021-05-21 16:11:45 +0300 Timo Sirainen (d9f2b426ea) + + imap: Send tagged login reply before finalizing user initialization + + Broken by 5fc66f182ff6941639d30372b414c1b39ae1e67e + +M src/imap/imap-client.c +M src/imap/imap-client.h +M src/imap/imap-master-client.c +M src/imap/main.c + +2021-05-21 16:23:36 +0300 Timo Sirainen (02363cfb7b) + + m4, dovecot-config: Add LIBDOVECOT_LUA_INCLUDE + + This allows building plugins that use lib-lua against uninstalled Dovecot + source code tree. + +M dovecot-config.in.in +M m4/dovecot.m4 + +2021-05-20 11:05:37 -0400 Josef 'Jeff' Sipek (d386e3727f) + + lib: event filter - Return invalid chars in the lexer + + This way, we leave it up to the parser to figure out whether or not they + make sense. + +M src/lib/event-filter-lexer.l +M src/lib/test-event-filter-parser.c + +2021-05-20 10:24:35 -0400 Josef 'Jeff' Sipek (8c6ea200af) + + lib: event filter - Allow '?' in filter language tokens + + Without this, it is not possible to use '?' wildcards without quoting the + value. + +M src/lib/event-filter-lexer.l +M src/lib/test-event-filter-parser.c + +2021-05-18 17:44:08 +0300 Timo Sirainen (308ba466c8) + + dict-sql: Support SQL_DB_FLAG_ON_CONFLICT_DO + + +M src/lib-dict-backend/dict-sql.c + +2021-05-18 17:40:00 +0300 Timo Sirainen (5329cd3af4) + + lib-sql: Add SQL_DB_FLAG_ON_CONFICT_DO for new enough sqlite and pgsql + + +M src/lib-sql/driver-pgsql.c +M src/lib-sql/driver-sqlite.c +M src/lib-sql/driver-test.c +M src/lib-sql/sql-api.h + +2021-05-18 17:21:59 +0300 Timo Sirainen (6cc9bd8e2b) + + lib-sql: sqlpool: Implement get_flags() as a wrapper to the real db + + +M src/lib-sql/driver-sqlpool.c + +2021-05-18 17:15:02 +0300 Timo Sirainen (3b3d90d2c9) + + lib: test-array - Add more unit tests for array_foreach*() + + Make sure that the elem value is as expected after the loop completes. + +M src/lib/test-array.c + +2021-05-18 17:08:51 +0300 Timo Sirainen (60dc5c2fe0) + + lib-sql: Add sql_db_vfuncs.get_flags() + + +M src/lib-sql/sql-api-private.h +M src/lib-sql/sql-api.c + +2021-05-18 17:02:30 +0300 Timo Sirainen (88a56737a5) + + dict-sql: Use SQL_DB_FLAG_ON_DUPLICATE_KEY + + Instead of hardcoding mysql check. + +M src/lib-dict-backend/dict-sql-private.h +M src/lib-dict-backend/dict-sql.c + +2021-05-18 17:00:44 +0300 Timo Sirainen (0d8acaeae2) + + lib-sql: Add SQL_DB_FLAG_ON_DUPLICATE_KEY flag for MySQL + + +M src/lib-sql/driver-mysql.c +M src/lib-sql/driver-test.c +M src/lib-sql/sql-api.h + +2021-05-24 18:55:28 +0300 Aki Tuomi (4766b85437) + + auth: mech-oauth2 - Iterate fields in safer manner + + Static analyser wasn't happy about the previous way. + +M src/auth/mech-oauth2.c + +2020-11-09 12:29:16 +0100 Stephan Bosch (5703f0b007) + + lib-smtp: smtp-server-recipient - Remove smtp_server_recipient_initialize(). + + It is no longer needed. + +M src/lib-smtp/smtp-server-cmd-rcpt.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-recipient.c + +2020-11-09 12:29:29 +0100 Stephan Bosch (b09ec34569) + + lib-smtp: smtp-server-recipient - Create transaction event early if there is + no transaction yet. + + This allows having a parent for the recipient event once the recipient is + created, which can precede the creation of the transaction. + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-recipient.c +M src/lib-smtp/smtp-server-transaction.c + +2021-05-21 18:20:10 +0300 Timo Sirainen (57874285f2) + + lib: Free unused data stack memory once per second while running ioloop + + This way if the data stack has grown excessively large temporarily, it won't + permanently waste memory. And if the data stack grows back to the same large + size, re-allocating it once per second doesn't cause performance problems. + +M src/lib/ioloop.c + +2021-05-21 18:13:08 +0300 Timo Sirainen (14ac1c5efe) + + lib: data-stack - Keep the largest unused block in memory after all + + This reverts 2da21080dbbe50b4924ac0135c84babfb404dcce, but that alone + doesn't produce working code so there are also some further fixups. + +M src/lib/data-stack.c +M src/lib/data-stack.h +M src/lib/test-data-stack.c + +2021-05-17 01:24:31 +0200 Stephan Bosch (d0ce18bc7f) + + lib-smtp: test-smtp-payload - Double the client progress timeout. + + Otherwise, SSL tests can fail on systems with low entropy. + +M src/lib-smtp/test-smtp-payload.c + +2021-04-21 03:02:38 +0200 Stephan Bosch (a2ea45e543) + + lib-smtp: smtp-client-transaction - Allow destroying connection while + transaction still holds reference. + + The lifetime of the transaction is controlled by the application and not so + much by the connection. The transaction holds a reference to the connection, + so if the connection is forcibly destroyed it needs, to notify the + transaction of this event. + + This fixes: + + Panic: file connection.c: line 938 (connection_list_deinit): assertion + failed: (conn != list->connections) + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h +M src/lib-smtp/smtp-client-transaction.c + +2021-04-22 12:13:35 +0200 Stephan Bosch (efcb45d77f) + + lib-smtp: smtp-client-transaction - Properly handle pending failure upon + smtp_client_transaction_send_reset(). + + +M src/lib-smtp/smtp-client-transaction.c + +2021-04-22 12:03:59 +0200 Stephan Bosch (f73471d049) + + lib-smtp: smtp-client-connection - Add + smtp_client_connection_transactions_fail() and use it. + + Use it to always fail the whole transaction first before the individual + commands if possible. + +M src/lib-smtp/smtp-client-connection.c + +2021-04-22 11:53:30 +0200 Stephan Bosch (406f3a4ee7) + + lib-smtp: smtp-client-connection - Split off + smtp_client_connection_transactions_fail_reply(). + + +M src/lib-smtp/smtp-client-connection.c + +2021-04-22 12:36:18 +0200 Stephan Bosch (9673639616) + + lib-smtp: smtp-client-connection - Always abort all commands upon + smtp_client_connection_close(). + + Before, these would get a disconnect failure, which makes no sense when the + client is causing the disconnect. + +M src/lib-smtp/smtp-client-connection.c + +2021-04-22 12:32:38 +0200 Stephan Bosch (0ef7144312) + + lib-smtp: smtp-client-connection - Abort all transactions upon + smtp_client_connection_close(). + + Before, these would get a disconnect failure, which makes no sense when the + client is causing the disconnect. + +M src/lib-smtp/smtp-client-connection.c + +2021-04-22 12:09:11 +0200 Stephan Bosch (c93786ad17) + + lib-smtp: test-smtp-payload - Finish client transaction only when it + finishes completely. + + +M src/lib-smtp/test-smtp-payload.c + +2021-05-17 01:13:36 +0200 Stephan Bosch (a2371f18ce) + + lib-smtp: Reformat smtp-client-transaction.c. + + +M src/lib-smtp/smtp-client-transaction.c + +2021-04-22 11:46:30 +0200 Stephan Bosch (105fd27947) + + lib-smtp: Reformat smtp-client-connection.c. + + +M src/lib-smtp/smtp-client-connection.c + +2021-05-10 22:37:44 +0300 Aki Tuomi (c6de40d420) + + auth: oauth2 - Support passing openid-configuration URL to client on failure + + +M doc/example-config/dovecot-oauth2.conf.ext +M src/auth/auth-request.h +M src/auth/db-oauth2.c +M src/auth/mech-oauth2.c + +2021-05-10 22:29:23 +0300 Aki Tuomi (291452bca5) + + auth: mech-oauth2 - Pass error fields as array + + Makes it easier to add fields to it later on. + +M src/auth/mech-oauth2.c + +2021-05-21 14:42:07 +0300 Timo Sirainen (f9461066c5) + + imap: copy/move: Fix memory leak when no messages were found + + +M src/imap/cmd-copy.c + +2021-02-12 01:22:25 +0200 Timo Sirainen (b13c1e300e) + + doveadm: Delay reading settings until doveadm plugins are loaded + + +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-mail.h +M src/doveadm/doveadm.c +M src/doveadm/main.c + +2021-02-12 01:54:48 +0200 Timo Sirainen (d8841feb84) + + doveadm: Add doveadm_setting_roots_*() API for plugins to register settings + + +M src/doveadm/doveadm-settings.c +M src/doveadm/doveadm-settings.h +M src/doveadm/doveadm.c +M src/doveadm/main.c +M src/lib-master/master-service-settings.c + +2021-02-15 17:11:07 +0200 Timo Sirainen (b1b19b0e25) + + doveadm: Move settings reading code into doveadm-settings.c + + This code is now shared between doveadm and doveadm-server. + +M src/doveadm/doveadm-settings.c +M src/doveadm/doveadm-settings.h +M src/doveadm/doveadm.c +M src/doveadm/main.c + +2021-02-12 19:17:25 +0200 Timo Sirainen (ca96472b05) + + lib-master: Add master_service_settings_input.extra_modules + + This allows specifying more than one module. + +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-settings.h + +2021-02-12 19:15:44 +0200 Timo Sirainen (5f1126a9fb) + + lib-master: master_service_exec_config() - Build argv using dynamic array + + +M src/lib-master/master-service-settings.c + +2021-05-11 00:07:24 +0300 Aki Tuomi (ef2a1b2336) + + auth: auth-worker - Respect service_count + + If service_count is set, then auth-worker will stop after given number of + requests. + +M src/auth/auth-settings.c +M src/auth/auth-worker-client.c +M src/auth/auth-worker-client.h +M src/auth/main.c + +2021-05-20 15:54:04 +0300 Timo Sirainen (714ff4342e) + + imap: Improve sending internal error to client if initialization fails + + The "Internal server error" should be sent using the same ostream that was + created. Also if service_user initialization failed there was no OK reply to + sent to login. + +M src/imap/main.c + +2021-05-20 15:42:45 +0300 Timo Sirainen (2e56339868) + + imap: Send initial tagged reply directly using ostream + + This simplifies the following commits. + +M src/imap/main.c + +2021-05-20 13:22:18 +0300 Timo Sirainen (5fc66f182f) + + imap: Send initial tagged reply and capability after rawlogs are initialized + + This way the initial tagged reply and capability is written to the rawlog. + Broken by 16328738d35370685387ec51d20657265855e770 + +M src/imap/main.c + +2021-05-20 13:16:40 +0300 Timo Sirainen (2dcb967ec1) + + imap: Split client_add_input_capability() into two functions + + +M src/imap/main.c + +2021-05-20 13:14:00 +0300 Timo Sirainen (75c4ad294a) + + imap: Rename struct client_input to imap_login_request + + This better indicates what it is about, and causes less confusion with all + the other client_input variables. + +M src/imap/main.c + +2021-03-08 16:45:08 +0200 Timo Sirainen (7c8becb4b0) + + pop3: Handle pipelined input via istream-concat + + This fixes rawlog_dir to work properly. It didn't log the pipelined input to + rawlog and it may have also caused the connection to hang. + +M src/pop3/main.c + +2021-03-08 16:44:31 +0200 Timo Sirainen (8fa48cb6d0) + + pop3: Move finishing istream to client_create_finish() + + +M src/pop3/pop3-client.c +M src/pop3/pop3-client.h + +2021-03-08 16:55:49 +0200 Timo Sirainen (e56bea8045) + + imap: Handle pipelined input from imap-hibernate via istream-concat + + Similarly to the previous commit, this fixes issues with rawlog. + +M src/imap/imap-master-client.c + +2021-03-08 16:37:15 +0200 Timo Sirainen (380aa66738) + + imap: Handle pipelined input via istream-concat + + This fixes rawlog_dir to work properly. It didn't log the pipelined input to + rawlog and it may have also caused the connection to hang. + +M src/imap/imap-client.c +M src/imap/imap-client.h +M src/imap/main.c + +2021-03-08 16:33:50 +0200 Timo Sirainen (16328738d3) + + imap: Move iostream-rawlog creation to client_create_finish() + + This allows the caller to modify the istream before rawlog. + +M src/imap/imap-client.c + +2021-03-08 16:33:33 +0200 Timo Sirainen (c8a9ccc5aa) + + lib: Add i_stream_copy_fd() + + +M src/lib/istream.c +M src/lib/istream.h + +2021-05-14 15:57:20 +0200 Markus Valentin (ad4c2b77a8) + + acl: Fix broken LIST for shared namespaces + + Due to the recent changes in the usage of the acl_ignore_namespace setting + shared namespaces where trying to use fast listing too. This resulted in + wrong LIST IMAP command outputs when using acl plugin. + + Broken by dc8ecd38a7e54b8bb80ae97712a0d8ad4edcbed3 + +M src/plugins/acl/acl-mailbox-list.c + +2021-05-12 19:06:27 +0300 Aki Tuomi (83939b222d) + + lib-lua: dlua-compat - Undefine lua_isinteger + + It's being defined in compat to return boolean, so undefine it here to make + sure it compiles. Broken in b59e89ebd97fa52de25b8e976a7dfe61f0d8a639 + +M src/lib-lua/dlua-compat.c + +2021-04-30 11:34:51 +0200 Markus Valentin (dc8ecd38a7) + + acl: Prevent crashes with acl_ignore_namespace + + In case a namespace was ignored for ACLs an crash could occur because of + "Module context acl_storage_module missing". This panic is prevented by this + change. + +M src/plugins/acl/acl-mailbox-list.c +M src/plugins/acl/acl-mailbox.c +M src/plugins/acl/acl-plugin.h + +2021-05-06 10:18:10 +0200 Markus Valentin (81b845fcf7) + + acl: Move static acl_namespace_is_ignored + + +M src/plugins/acl/acl-mailbox-list.c + +2021-02-18 12:41:51 +0200 Timo Sirainen (b04d1a4a71) + + lib-program-client: Change program_client_run*() to return enum + program_client_exit_status + + Their behavior is clearer when result is expressed as enum than int. + +M src/director/director.c +M src/lib-program-client/program-client.c +M src/lib-program-client/program-client.h +M src/lib-program-client/test-program-client-net.c +M src/lib-program-client/test-program-client-unix.c +M src/lib-smtp/smtp-submit.c + +2021-02-18 12:33:06 +0200 Timo Sirainen (da5c1d11b9) + + lib-program-client: Rename "exit_code" to "exit_status" + + exit_code typically refers to the numeric 0..255 value that processes exit + with. + +M src/lib-program-client/program-client-local.c +M src/lib-program-client/program-client-private.h +M src/lib-program-client/program-client-remote.c +M src/lib-program-client/program-client.c +M src/lib-program-client/program-client.h + +2021-02-18 12:30:50 +0200 Timo Sirainen (6a30dcc20b) + + lib-program-client: Move enum program_client_exit_code to public .h file + + +M src/lib-program-client/program-client-private.h +M src/lib-program-client/program-client.h + +2021-05-10 19:46:53 +0300 Aki Tuomi (2b403bc75c) + + lib-lua: dlua-dovecot - Ref event on push + + Matches with unref on __gc. + +M src/auth/db-lua.c +M src/lib-lua/dlua-dovecot.c + +2021-05-10 19:23:48 +0300 Aki Tuomi (5becc3bb36) + + lib-lua: test-lua - Use bool for expected_isnum in check_tointegerx_compat + + +M src/lib-lua/test-lua.c + +2021-05-10 19:21:50 +0300 Aki Tuomi (b59e89ebd9) + + lib-lua: Define lua_isinteger as boolean function + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c +M src/lib-lua/test-lua.c + +2021-04-19 14:51:05 +0300 Aki Tuomi (1fa8dbb63e) + + lib-lua: Fix error reporting for script loading + + +M src/lib-lua/dlua-script.c + +2021-04-19 14:45:56 +0300 Aki Tuomi (27e165d381) + + lib-lua: Use dluaL_error for luaL_error + + +M src/lib-lua/dlua-script-private.h + +2021-04-16 13:19:26 +0300 Aki Tuomi (4258a2d8d7) + + lib-lua: Fix luaL_error usage + + +M src/auth/db-lua.c +M src/lib-lua/dlua-script.c +M src/lib-storage/mailbox-lua.c + +2021-04-16 13:11:20 +0300 Aki Tuomi (5d70672760) + + lib-lua: Add dluaL_error + + +M src/lib-lua/Makefile.am +A src/lib-lua/dlua-error.c +M src/lib-lua/dlua-script-private.h + +2021-04-16 13:10:41 +0300 Aki Tuomi (890c7a0581) + + lib-lua: dlua-script - Add dlua_pushfstring + + Uses full sprintf + +M src/lib-lua/Makefile.am +A src/lib-lua/dlua-pushstring.c +M src/lib-lua/dlua-script-private.h + +2021-04-15 11:19:52 +0300 Aki Tuomi (15773af5b3) + + lib-lua: dlua-wrapper - Constify extra functions + + +M src/lib-lua/dlua-wrapper.h + +2021-05-11 16:53:57 +0200 Timo Sirainen (da9ccf08a4) + + lib-index, lib-compression: Fix explicit integer wrapping + + Using modulo instead of AND wrapped it one number too early. Luckily these + didn't break anything. + +M src/lib-compression/test-compression.c +M src/lib-index/mail-cache-lookup.c +M src/lib-index/mail-cache-purge.c + +2021-05-05 12:45:25 +0300 Timo Sirainen (f550663b37) + + lib: abort() on unexpected exit() + + This can especially be useful in catching bugs in Lua script that could + unexpectedly exit. + +M src/lib-master/master-service.c +M src/lib/failures.c +M src/lib/lib.c +M src/lib/lib.h +M src/master/main.c + +2021-05-05 12:44:03 +0300 Timo Sirainen (6d52674782) + + global: Replace exit() with lib_exit() + + +M src/auth/checkpassword-reply.c +M src/auth/db-checkpassword.c +M src/config/doveconf.c +M src/dict/main.c +M src/doveadm/doveadm-mail.c +M src/doveadm/doveadm-pw.c +M src/doveadm/doveadm.c +M src/lib-compression/bench-compression.c +M src/lib-oauth2/test-oauth2-jwt.c +M src/lib-test/test-common.c +M src/lib-test/test-subprocess.c +M src/lib/failures.c +M src/lib/lib.h +M src/lib/test-file-create-locked.c +M src/master/main.c +M src/util/rawlog.c +M src/util/tcpwrap.c + +2021-04-14 10:45:55 +0200 Stephan Bosch (f2fc1c01f8) + + lib-http: http-client-peer - Fix segfault occurring upon backoff connect. + + If peers decide to close and destroy immediately, the iteration in the + shared peer yields an invalid pointer for the next peer to connect. Fixed by + preserving pointer to next peer inside the loop. + +M src/lib-http/http-client-peer.c + +2021-04-30 16:59:50 -0400 Josef 'Jeff' Sipek (aefe4941c1) + + lib: event filter - Avoid using event field wildcard matching when not + needed + + If the right hand side of an event field comparison is not using any + wildcards, we can compare using strcasecmp() instead of the more expensive + wildcard_match_icase(). + + This wildcard matching avoidance change speeds up matching quite a bit. When + the desired comparison is *not* a wildcard match (i.e., the filter is + 'fieldname=abc'), microbenchmarks show at least a 11% speedup in filter + matching speed. When the comparison includes a wildcard (i.e., the filter + is 'fieldname=abc*'), microbenchmarks show approximately 0.9% filer matching + slowdown. + + Since there are so many non-wildcard matches in a typical filter, this is a + very good trade-off. + +M src/lib/event-filter-parser.y +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-04-30 16:39:15 -0400 Josef 'Jeff' Sipek (dcb47858e1) + + lib: event filter - Rename EVENT_FILTER_NODE_TYPE_EVENT_FIELD to denote + wildcard matching + + +M src/lib/event-filter-parser.y +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-04-30 12:41:55 -0400 Josef 'Jeff' Sipek (33e01c1c30) + + lib: event filter - Avoid using event name wildcard matching when not needed + + If the right hand side of an event name comparison is not using any + wildcards, we can compare using strcmp() instead of the more expensive + wildcard_match(). + + This wildcard matching avoidance change speeds up matching quite a bit. When + the desired comparison is *not* a wildcard match (i.e., the filter is + 'event=abc'), microbenchmarks show at least a 30% speedup in filter matching + speed. When the comparison includes a wildcard (i.e., the filter is + 'event=abc*'), microbenchmarks show approximately 0.4% filer matching + slowdown. + + Since there are so many non-wildcard matches in a typical filter, this is a + very good trade-off. + +M src/lib/event-filter-parser.y +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-04-30 12:44:17 -0400 Josef 'Jeff' Sipek (aa6edb3499) + + lib: event filter - Rename EVENT_FILTER_NODE_TYPE_EVENT_NAME to denote + wildcard matching + + +M src/lib/event-filter-parser.y +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-04-30 14:09:10 -0400 Josef 'Jeff' Sipek (0e7cf747a9) + + lib: Add wildcard_is_literal to check if a mask has * or ? + + +M src/lib/wildcard-match.h + +2021-05-10 11:26:54 +0300 Timo Sirainen (e786e5f40a) + + lib: test-env-util - Make static analyzer happy + + +M src/lib/test-env-util.c + +2021-05-06 21:25:54 +0300 Aki Tuomi (79a2edcd07) + + lib-dict: dict-lua - Don't yield again until previous one has completed + + +M src/lib-dict/dict-iter-lua.c + +2021-05-04 12:15:55 +0300 Aki Tuomi (315f9073f4) + + lib-dict: dict-lua - Use absolute stack positions for arguments + + +M src/lib-dict/dict-iter-lua.c +M src/lib-dict/dict-lua.c +M src/lib-dict/dict-txn-lua.c + +2021-05-05 13:40:29 +0300 Aki Tuomi (9547662586) + + acl: Reinitialize local acl object after creating mailbox + + For INDEX layout this is needed to actually get the local mailbox path. This + fixes inheriting ACLs from parent folder for INDEX layouts. + +M src/plugins/acl/acl-mailbox.c + +2021-05-05 18:18:29 +0300 Timo Sirainen (8b92cf375f) + + lib: Add unit tests to env-util + + +M src/lib/Makefile.am +A src/lib/test-env-util.c +M src/lib/test-lib.inc + +2021-01-20 20:53:53 +0200 Timo Sirainen (d9dad9970e) + + lib-index: Use env_put() instead of putenv() directly + + +M src/lib-index/test-mail-index-transaction-update.c + +2021-01-20 20:51:56 +0200 Timo Sirainen (d1f628e8b0) + + configure, lib: Remove workarounds for unsetenv() + + It's in POSIX.1-2001 and available on all modern systems. + +M configure.ac +D m4/unsetenv.m4 +M src/lib/env-util.c + +2021-01-20 20:48:24 +0200 Timo Sirainen (8e7744b179) + + lib: env_put() - Use setenv() instead of putenv() + + It's already in POSIX.1-2001 so it should be available everywhere. + +M src/lib/env-util.c +M src/lib/env-util.h +M src/lib/lib.c + +2021-01-20 20:46:27 +0200 Timo Sirainen (9f1b0a7fa5) + + lib, global: Change env_put() API to take name,value pair + + +M src/auth/db-checkpassword.c +M src/auth/db-ldap.c +M src/auth/mech-gssapi.c +M src/config/doveconf.c +M src/dict/main.c +M src/doveadm/doveadm.c +M src/lda/main.c +M src/lib-master/master-service-settings.c +M src/lib-master/master-service.c +M src/lib/env-util.c +M src/lib/env-util.h +M src/lib/restrict-access.c +M src/lib/test-var-expand.c +M src/master/service-process.c +M src/util/script-login.c + +2021-01-20 20:45:11 +0200 Timo Sirainen (990bb780a3) + + lib-program-client, script: Use env_put_array() + + +M src/lib-program-client/program-client-local.c +M src/util/script.c + +2021-01-20 20:42:40 +0200 Timo Sirainen (3af2f08c27) + + lib: Add env_put_array() + + +M src/lib/env-util.c +M src/lib/env-util.h + +2021-04-20 18:06:19 +0200 Timo Sirainen (f19988344d) + + util/dovecot-sysreport: Finish report even if doveadm calls fail + + It can be useful to generate the report even when dovecot isn't running. + +M src/util/dovecot-sysreport + +2021-04-01 14:16:34 +0300 Timo Sirainen (ebf2557b57) + + util/dovecot-sysreport --core: Support multiple core files + + +M doc/man/dovecot-sysreport.1.in +M src/util/dovecot-sysreport + +2021-04-01 14:12:14 +0300 Timo Sirainen (d7cb97d26c) + + util/dovecot-sysreport --core: Check gdb existence earlier + + Simplifies the next commit. + +M src/util/dovecot-sysreport + +2021-04-01 14:09:42 +0300 Timo Sirainen (74d399f441) + + util/dovecot-sysreport --core: Change binary path to be optional + + If not specified, detect it from the core file itself + +M src/util/dovecot-sysreport + +2021-05-06 01:08:50 +0300 Timo Sirainen (e2651f1d5e) + + global: Use array_idx_elem() where possible + + +M src/auth/auth-worker-server.c +M src/auth/db-dict.c +M src/auth/db-ldap.c +M src/auth/db-lua.c +M src/director/director.c +M src/doveadm/dsync/dsync-mailbox-import.c +M src/doveadm/dsync/dsync-mailbox-tree-sync.c +M src/indexer/indexer-queue.c +M src/lib-dict-backend/dict-ldap.c +M src/lib-dict/dict-client.c +M src/lib-dns/test-dns-util.c +M src/lib-http/http-server-resource.c +M src/lib-imap-client/imapc-connection.c +M src/lib-index/mail-index-transaction.c +M src/lib-ldap/ldap-connection.c +M src/lib-sql/driver-cassandra.c +M src/lib-storage/index/imapc/imapc-save.c +M src/lib-storage/index/imapc/imapc-sync.c +M src/lib-storage/index/maildir/maildir-keywords.c +M src/lib-storage/list/mailbox-list-fs-iter.c +M src/lib-storage/list/mailbox-list-index-notify.c +M src/lib-storage/mail-search-args-imap.c +M src/lib-storage/mailbox-attribute.c +M src/lib-storage/mailbox-list.c +M src/lib/hash2.c +M src/plugins/acl/acl-lookup-dict.c +M src/plugins/push-notification/push-notification-drivers.c +M src/plugins/push-notification/push-notification-events.c +M src/plugins/quota/quota.c +M src/plugins/virtual/virtual-save.c +M src/stats/stats-service-openmetrics.c + +2021-05-04 16:40:09 +0300 Timo Sirainen (2070e0faf9) + + lib: Add array_idx_elem() + + This returns array_idx()'s value dereferenced, so it only works for arrays + of pointers. + + Note that using *array_idx() does the same, but it won't compile if the + compiler doesn't have typeof() support. + +M src/lib/array.h +M src/lib/test-array.c + +2021-02-10 22:06:29 +0200 Timo Sirainen (f79dbc248c) + + lib: Remove array_swap() + + It's not used anywhere, and it's a bit too weird. + +M src/lib/array.h +M src/lib/test-array.c + +2021-02-10 21:45:58 +0200 Timo Sirainen (2b50ec125b) + + global: Use array_foreach_elem() where possible + + +M src/dict/dict-commands.c +M src/imap-login/imap-login-commands.c +M src/imap-urlauth/imap-urlauth-worker.c +M src/ipc/ipc-connection.c +M src/ipc/ipc-group.c +M src/lib-fs/fs-api.c +M src/lib-mail/istream-attachment-connector.c +M src/lib-master/master-service-settings.c +M src/lib-program-client/program-client-local.c +M src/lib-program-client/program-client-remote.c +M src/lib-sql/driver-cassandra.c +M src/lib-sql/driver-sqlpool.c +M src/lib-test/test-subprocess.c +M src/lmtp/lmtp-proxy.c +M src/login-common/login-proxy.c +M src/login-common/main.c +M src/replication/replicator/doveadm-connection.c +M src/replication/replicator/replicator-brain.c + +2021-02-10 21:45:41 +0200 Timo Sirainen (b3bc25eac5) + + lib-fts: Use array_foreach_elem() where possible + + +M src/lib-fts/fts-filter.c +M src/lib-fts/fts-language.c +M src/lib-fts/fts-tokenizer.c + +2021-02-10 21:45:19 +0200 Timo Sirainen (bdc37a1d9c) + + submission: Use array_foreach_elem() where possible + + +M src/submission/submission-backend-relay.c +M src/submission/submission-backend.c +M src/submission/submission-recipient.c + +2021-02-10 21:43:18 +0200 Timo Sirainen (6392b0706f) + + stats: Use array_foreach_elem() where possible + + +M src/stats/client-http.c +M src/stats/stats-metrics.c +M src/stats/stats-service-openmetrics.c +M src/stats/stats-settings.c + +2021-02-10 21:35:04 +0200 Timo Sirainen (7c7e7215de) + + lib-smtp: Use array_foreach_elem() where possible + + +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/smtp-server-transaction.c +M src/lib-smtp/smtp-submit.c + +2021-02-10 21:31:16 +0200 Timo Sirainen (162320b73c) + + lib-old-stats: Use array_foreach_elem() where possible + + +M src/lib-old-stats/stats.c + +2021-02-10 21:20:25 +0200 Timo Sirainen (1bf42b1140) + + config: Use array_foreach_elem() where possible + + +M src/config/config-filter.c +M src/config/config-parser.c +M src/config/doveconf.c + +2021-02-10 21:18:42 +0200 Timo Sirainen (3200ca5b9a) + + plugins: Use array_foreach_elem() where possible + + +M src/plugins/fts/fts-search-args.c +M src/plugins/fts/fts-user.c +M src/plugins/mail-crypt/doveadm-mail-crypt.c +M src/plugins/mail-crypt/mail-crypt-acl-plugin.c +M src/plugins/mail-crypt/mail-crypt-key.c +M src/plugins/notify-status/notify-status-plugin.c +M src/plugins/push-notification/push-notification-driver-dlog.c +M src/plugins/push-notification/push-notification-driver-lua.c +M src/plugins/push-notification/push-notification-drivers.c +M src/plugins/push-notification/push-notification-event-flagsclear.c +M src/plugins/push-notification/push-notification-event-flagsset.c +M src/plugins/push-notification/push-notification-plugin.c +M src/plugins/push-notification/push-notification-triggers.c + +2021-02-10 21:09:42 +0200 Timo Sirainen (6a1099f54a) + + master: Use array_foreach_elem() where possible + + +M src/master/main.c +M src/master/master-client.c +M src/master/master-settings.c +M src/master/service-listen.c +M src/master/service-log.c +M src/master/service-monitor.c +M src/master/service.c + +2021-02-10 21:03:16 +0200 Timo Sirainen (4dea1aeb5f) + + lib-index: Use array_foreach_elem() where possible + + +M src/lib-index/mail-index-fsck.c +M src/lib-index/mail-index-transaction.c + +2021-02-10 21:01:06 +0200 Timo Sirainen (6d8e8e328a) + + lib-imap-client: Use array_foreach_elem() where possible + + +M src/lib-imap-client/imapc-client.c +M src/lib-imap-client/imapc-connection.c + +2021-02-10 20:58:20 +0200 Timo Sirainen (d97ca599fa) + + lib-http: Use array_foreach_elem() where possible + + +M src/lib-http/http-client-host.c +M src/lib-http/http-client-peer.c +M src/lib-http/http-client-queue.c +M src/lib-http/http-client.c +M src/lib-http/http-message-parser.c +M src/lib-http/http-request.c +M src/lib-http/http-response.c +M src/lib-http/http-server-resource.c +M src/lib-http/http-server-response.c +M src/lib-http/http-server.c + +2021-02-10 20:45:50 +0200 Timo Sirainen (93c59b3309) + + lib-dict: Use array_foreach_elem() where possible + + +M src/lib-dict/dict-client.c +M src/lib-dict/dict.c + +2021-02-10 20:44:08 +0200 Timo Sirainen (b797b8377c) + + imap: Use array_foreach_elem() where possible + + +M src/imap/imap-client.c +M src/imap/imap-commands-util.c +M src/imap/imap-notify.c +M src/imap/imap-state.c + +2021-02-10 20:41:27 +0200 Timo Sirainen (75b985c753) + + doveadm: Use array_foreach_elem() where possible + + +M src/doveadm/doveadm-dump.c +M src/doveadm/doveadm-fs.c +M src/doveadm/doveadm-mail-batch.c +M src/doveadm/doveadm-mail-mailbox.c +M src/doveadm/doveadm-mail-server.c +M src/doveadm/doveadm-print-table.c +M src/doveadm/doveadm-who.c +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-ibc-pipe.c +M src/doveadm/dsync/dsync-mailbox-import.c +M src/doveadm/server-connection.c + +2021-02-10 20:34:25 +0200 Timo Sirainen (8364fd0be1) + + director: Use array_foreach_elem() where possible + + +M src/director/director-connection.c +M src/director/director-host.c +M src/director/director.c +M src/director/doveadm-connection.c +M src/director/mail-host.c +M src/director/main.c +M src/director/notify-connection.c +M src/director/user-directory.c + +2021-02-10 20:25:30 +0200 Timo Sirainen (cab67ca2cd) + + auth: Use array_foreach_elem() where possible + + +M src/auth/auth-worker-server.c +M src/auth/auth.c +M src/auth/db-dict-cache-key.c +M src/auth/db-dict.c +M src/auth/passdb.c +M src/auth/userdb.c + +2021-02-10 20:13:52 +0200 Timo Sirainen (6c540c71a7) + + lib-storage: Use array_foreach_elem() where possible + + +M src/lib-storage/index/dbox-single/sdbox-file.c +M src/lib-storage/index/dbox-single/sdbox-sync.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/index-search.c +M src/lib-storage/index/maildir/maildir-save.c +M src/lib-storage/list/mailbox-list-index-sync.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/mail-autoexpunge.c +M src/lib-storage/mail-namespace.c +M src/lib-storage/mail-storage-hooks.c +M src/lib-storage/mail-storage.c +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-lua.c +M src/lib-storage/mailbox-tree.c +M src/lib-storage/mailbox-watch.c + +2021-02-10 20:06:07 +0200 Timo Sirainen (6934e3eff8) + + lib: Use array_foreach_elem() where possible + + +M src/lib/env-util.c +M src/lib/event-filter.c +M src/lib/ioloop.c +M src/lib/istream-multiplex.c +M src/lib/lib-event.c +M src/lib/ostream-multiplex.c + +2021-02-10 19:53:25 +0200 Timo Sirainen (e788a21940) + + lib: array.h - Update array_foreach*() comments + + +M src/lib/array.h + +2021-02-10 19:49:00 +0200 Timo Sirainen (178a24d520) + + lib: array.h - Require C99 + + We're already requiring C99 elsewhere. + +M src/lib/array.h + +2021-05-05 17:49:33 +0300 Timo Sirainen (50957d30d6) + + lib: array_foreach_elem() - Don't allow using it for sizes larger than a + pointer + + Dovecot doesn't use any types larger than the pointer size (e.g. long + double). Restricting it to max pointer size might prevent inefficient usage. + +M src/lib/array.h +M src/lib/test-array.c + +2021-02-10 19:47:13 +0200 Timo Sirainen (db41d8aef3) + + lib: array_foreach_elem() - Small optimization + + Avoid having to recalculate the end of the array after each loop. This makes + the resulting assembler output similar to array_foreach(). + +M src/lib/array.h + +2021-04-01 17:24:10 +0300 Timo Sirainen (c9fa200175) + + lib-index: Try harder to open index with MAIL_INDEX_OPEN_FLAG_READONLY + + The readonly-flag is used when rebuilding index or dumping indexes. In both + cases it's better to try to open the index as best as possible, since fsck + isn't allowed. + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index.c + +2021-05-06 15:17:05 -0400 Josef 'Jeff' Sipek (ef61bea432) + + lib-lua: Remove obsolete threading check + + We support multiple lua thread as long as they are created using the + dlua_script_new_thread() helper. + +M src/lib-lua/dlua-script.c + +2021-05-05 16:47:43 +0300 Timo Sirainen (3d2a582d56) + + dict-ldap: Fix calling dict_wait() on async lookup + + The dict_wait() could have waited forever because nothing stopped the + ioloop. Also fix calling the callback with the proper active ioloop. + +M src/lib-dict-backend/dict-ldap.c + +2021-05-05 16:41:21 +0300 Timo Sirainen (8e730ab0b7) + + dict-redis: dict-client: Use the proper active ioloop while calling commit() + callbacks + + If the callbacks did any IO/timeout changes, they would have gone to a wrong + ioloop. This would have caused a warning about IO/timeout leak though, so it + doesn't seem like there were such code paths currently. + +M src/lib-dict/dict-redis.c + +2021-05-05 16:37:52 +0300 Timo Sirainen (d559180d9e) + + dict-memcached-ascii: Assert-crash if dict ioloop gets any unexpected IOs or + timeouts + + +M src/lib-dict/dict-memcached-ascii.c + +2021-03-22 17:05:24 +0200 Timo Sirainen (92c30d0d36) + + dict-client: Assert-crash if dict ioloop gets any unexpected IOs or timeouts + + +M src/lib-dict/dict-client.c + +2021-03-22 16:50:04 +0200 Timo Sirainen (ad5d1ee03f) + + dict-client: Use the proper active ioloop while calling commit() and + lookup() callbacks + + If the callbacks did any IO/timeout changes, they would have gone to a wrong + ioloop. + +M src/lib-dict/dict-client.c + +2021-03-22 16:59:09 +0200 Timo Sirainen (4c40609b56) + + lib: Add io_loop_is_empty() + + +M src/lib/ioloop.c +M src/lib/ioloop.h +M src/lib/test-ioloop.c + +2021-05-05 11:19:24 +0300 Timo Sirainen (49b2183103) + + stats: Truncate field values to 1000 bytes with log exporter + + This attempts to prevent log lines from growing longer than 4 kB, which + causes them to wrap. + +M src/stats/event-exporter-fmt-json.c +M src/stats/event-exporter-fmt-tab-text.c +M src/stats/stats-metrics.c +M src/stats/stats-metrics.h + +2021-05-04 14:12:20 +0300 Timo Sirainen (2227e1ab77) + + imap: copy/move: Refresh source mailbox before copying/moving + + This way if another session had just expunged mails, the expunges will be + noticed and the copy/move will abort early. + +M src/imap/cmd-copy.c + +2021-04-29 15:49:00 +0300 Timo Sirainen (143b7c2b41) + + imap: move: Sync source mailbox between commits + + This way the messages are actually expunged from storage after the commit, + not just requested to be expunged. Most importantly this means that if + another session attempts to start moving the same messages it can be noticed + earlier and one of the moves aborted. + +M src/imap/cmd-copy.c + +2021-04-29 15:45:44 +0300 Timo Sirainen (739a46fe1b) + + imap: Add imap_search_anyset_to_uidset() + + +M src/imap/imap-search-args.c +M src/imap/imap-search-args.h + +2021-04-29 15:46:48 +0300 Timo Sirainen (3704149543) + + imap: Allow imap_search_seqset_iter_init() to iterate over uidset also + + +M src/imap/imap-search-args.c +M src/imap/imap-search-args.h + +2021-04-29 15:43:10 +0300 Timo Sirainen (3421ea2f78) + + lib-storage: Fix mailbox_get_uid_range() to handle "*" correctly + + Previously attempting to convert e.g. 1:* range would just assert-crash. + There were no such callers currently though. + +M src/lib-storage/mailbox-get.c +M src/lib-storage/test-mailbox-get.c + +2021-04-29 15:39:29 +0300 Timo Sirainen (91ba53a4a0) + + lib-storage: Always set struct mail.expunged + + Previously it was set only when some error noticed that there was a problem + accessing the mail. Now this is set immediately in mail_set_seq(). This + allows e.g. IMAP COPY/MOVE to abort when it encounters expunged mails. + +M src/lib-storage/index/index-mail.c + +2021-05-04 02:19:07 +0200 Stephan Bosch (d9ce815d93) + + lib-program-client: test-program-client-unix - Add test for delayed + disconnect after sending result code. + + +M src/lib-program-client/test-program-client-unix.c + +2021-05-03 23:54:11 +0200 Stephan Bosch (9599b0daaa) + + lib-program-client: test-program-client-net - Add test for delayed + disconnect after sending result code. + + +M src/lib-program-client/test-program-client-net.c + +2021-05-04 02:12:21 +0200 Stephan Bosch (9af1bb34e8) + + lib-program-client: test-program-client-unix - Fix server-side argument + count check. + + +M src/lib-program-client/test-program-client-unix.c + +2021-05-04 02:11:34 +0200 Stephan Bosch (982322ac6e) + + lib-program-client: test-program-client-net - Fix server-side argument count + check. + + +M src/lib-program-client/test-program-client-net.c + +2021-05-03 23:54:26 +0200 Stephan Bosch (1666e897f3) + + lib-program-client: program-client-remote - Fix result parsing in the + istream. + + This fixes internal errors occurring when the parent stream is fully read + before EOF is signaled. This was caused by the fact that the final bytes + were not always reserved properly for parsing, so that these ended up being + exposed to and eaten by the application. At the end, the result parsing code + would be faced with no data, thereby causing an internal error to be + returned by the calling application. + + This came to light as CI tests involving Sieve extprograms failed + irregularly. This problem only occurs when a (slight) delay exists between + the last data being sent and the connection being closed by the script + service, making this hard to reproduce. It typically occurred only under + high server load. + +M src/lib-program-client/program-client-remote.c + +2021-05-03 23:51:36 +0200 Stephan Bosch (4d4b1a1798) + + lib-program-client: program-client-remote - Fix error handling of istream. + + These days, input streams also set eof upon error, making the existing code + path wrong. + +M src/lib-program-client/program-client-remote.c + +2021-05-04 01:46:22 +0200 Stephan Bosch (0ffc146325) + + lib-program-client: program-client-remote - Add proper error and debug + logging for result code parsing. + + +M src/lib-program-client/program-client-remote.c + +2021-05-04 01:34:30 +0200 Stephan Bosch (17ca57dba7) + + lib-program-client: program-client-local - Add debug for child start + problem. + + +M src/lib-program-client/program-client-local.c + +2021-05-03 23:49:11 +0200 Stephan Bosch (ca34fd9db1) + + lib-program-client: Reformat test-program-client-unix.c. + + +M src/lib-program-client/test-program-client-unix.c + +2021-05-03 23:43:47 +0200 Stephan Bosch (e04a83afc8) + + lib-program-client: Reformat test-program-client-net.c. + + +M src/lib-program-client/test-program-client-net.c + +2021-05-03 23:35:38 +0200 Stephan Bosch (cfb3944760) + + lib-program-client: Reformat program-client-remote.c. + + +M src/lib-program-client/program-client-remote.c + +2021-04-22 12:07:12 +0300 Timo Sirainen (159e07879e) + + lib-test: Convert test_assert()s to fatal asserts when running static + analyzer + + This avoids unnecessary warnings about unit tests crashing when + test_assert()s fail. The warnings are correct, but it's a bit unnecessary to + write the failure code paths that nicely. + +M src/lib-test/test-common.c +M src/lib-test/test-common.h + +2021-04-26 14:14:45 +0300 Timo Sirainen (e71b8894ab) + + lib: Perform most of the event logging within data stack frame + + +M src/lib/event-log.c +M src/lib/test-event-log.c + +2021-04-26 14:13:09 +0300 Timo Sirainen (7fae81da43) + + lib-storage: Add data stack frames to mail_set_*() + + This can reduce data stack usage significantly with mail thread building. + +M src/lib-storage/mail.c + +2021-03-31 16:26:00 +0300 Timo Sirainen (6a058be026) + + lib: data-stack - If frame doesn't change current block, no blocks need to + be freed + + This is a micro-optimization to t_pop() to avoid an extra if-check. + +M src/lib/data-stack.c + +2021-03-31 16:22:24 +0300 Timo Sirainen (68ecc20d7b) + + lib: data-stack - Use stack_block.left_lowwater only with DEBUG + + +M src/lib/data-stack.c + +2021-03-31 16:17:30 +0300 Timo Sirainen (e8942f869c) + + lib: Remove data_stack_set_clean_after_pop() + + +M src/lib/data-stack.c +M src/lib/data-stack.h +M src/lib/test-data-stack.c + +2021-03-31 16:04:47 +0300 Timo Sirainen (62fa24f787) + + lib: data-stack - Move frame memory allocation inside data stack block + + +M src/lib/data-stack.c +M src/lib/test-data-stack.c + +2021-03-31 14:25:47 +0300 Timo Sirainen (158dfdf6ff) + + lib: data-stack - Replace stack_frame_block with a single stack_frame + + This simplifies the code at the cost of more memory allocations. However, + this will be fixed by the following commit. + +M src/lib/data-stack.c + +2020-11-16 20:54:20 +0200 Timo Sirainen (0e3652c4ea) + + lib: data-stack - Add data_stack_grow event + + This is now always enabled, not just in debug builds. + +M src/lib/data-stack.c +M src/lib/data-stack.h +M src/lib/lib.c +M src/lib/test-data-stack.c + +2021-03-31 14:40:12 +0300 Timo Sirainen (aff92930fb) + + lib: t_get_bytes_available() - Fix return value when current_block is almost + full + + +M src/lib/data-stack.c +M src/lib/test-data-stack.c + +2020-11-16 14:56:50 +0200 Timo Sirainen (f520a62a25) + + lib-settings: settings_check() - Avoid growing data stack unnecessarily + + Each check_func() could have increased data stack usage. Add it inside a + data stack frame to avoid it growing unnecessarily large. + +M src/lib-settings/settings-parser.c + +2020-11-16 14:58:08 +0200 Timo Sirainen (df4f7032cb) + + lib: module_dir_*load*(): Avoid growing data stack when checking duplicates + + This check could have unnecessarily grown data stack size when many plugins + are installed. + +M src/lib/module-dir.c + +2020-11-16 19:37:26 +0200 Timo Sirainen (a7ccda0286) + + global: Use T_END_PASS_STR() where possible + + +M src/config/config-parser.c +M src/lib-fs/fs-api.c +M src/lib-imap/imap-bodystructure.c +M src/lib-mail/mail-user-hash.c +M src/lib-mail/message-search.c +M src/lib-settings/settings-parser.c +M src/lib-sql/driver-cassandra.c +M src/lib-sql/driver-sqlpool.c + +2020-11-16 18:23:59 +0200 Timo Sirainen (6f68dc6736) + + lib: data-stack - Add t_pop_pass_str() and T_END_PASS_STR[_IF]() + + This simplifies passing error strings out of stack frames. For example: + + const char *error; + T_BEGIN { + ... + if (ret < 0) + error = t_strdup_printf("foo() failed: %m"); + } T_END_PASS_STR_IF(ret < 0, &error); + // error is still valid + +M src/lib/data-stack.c +M src/lib/data-stack.h +M src/lib/test-data-stack.c + +2021-03-31 11:56:10 +0300 Timo Sirainen (b5b15e1d41) + + lib: Add data_stack_frame_contains() + + +M src/lib/data-stack.c +M src/lib/data-stack.h + +2021-03-31 13:19:00 +0300 Timo Sirainen (f0180e7885) + + lib: Add data_stack_get_alloc_size() + + +M src/lib/data-stack.c +M src/lib/data-stack.h + +2021-03-31 12:59:29 +0300 Timo Sirainen (b2bb139396) + + lib: Fix data_stack_get_used_size() to return correct size + + It only included the last allocated block's used size. + +M src/lib/data-stack.c + +2021-03-31 12:52:47 +0300 Timo Sirainen (1f021a21b1) + + lib: data-stack - Don't set stack_block.next=NULL after mem_block_alloc() + already did it + + +M src/lib/data-stack.c + +2021-03-31 12:51:34 +0300 Timo Sirainen (7b1c81b369) + + lib: data-stack - mem_block_alloc() - Set stack_block.left to final value + immediately + + There's no need to first set it to 0 and then have the caller change it + again. + +M src/lib/data-stack.c + +2020-11-17 00:36:27 +0200 Timo Sirainen (6c37802b18) + + lib: data-stack - Remove unused_frame_blocks + + It's not that expensive to keep allocating them as needed, and it's a + potential waste of memory to keep them around. + +M src/lib/data-stack.c + +2020-11-17 00:32:45 +0200 Timo Sirainen (2da21080db) + + lib: data-stack - Don't keep largest unused block in memory + + It's not that expensive to allocate it again, but it might be expensive to + keep allocated a block that became huge due to a bug. The huge block could + be just wasting memory without ever being used again. + +M src/lib/data-stack.c + +2020-11-16 18:09:44 +0200 Timo Sirainen (59ff832bd1) + + lib: data-stack - Add unit test for data_stack_set_clean_after_pop() + + +M src/lib/test-data-stack.c + +2020-11-16 18:08:57 +0200 Timo Sirainen (8d5c1b2ecb) + + lib: data-stack - Rename variables in clean_after_pop handling + + These new variables make more sense than the old ones. + +M src/lib/data-stack.c + +2020-11-16 18:06:55 +0200 Timo Sirainen (c702072ece) + + lib: data-stack - Rename lowwater to left_lowwater + + This describes its behavior better. Also add a comment explaining what + exactly it is. + +M src/lib/data-stack.c + +2020-11-16 17:57:39 +0200 Timo Sirainen (8a37fc6f68) + + lib: data-stack - Rename block_space_used[] to block_space_left[] + + This describes its behavior better. Also add a comment explaining what + exactly it is. + +M src/lib/data-stack.c + +2020-11-16 15:25:36 +0200 Timo Sirainen (d3e36b20b1) + + lib: data-stack - Use INITIAL_STACK_SIZE without growing it to nearest power + + +M src/lib/data-stack.c + +2021-03-31 13:13:22 +0300 Timo Sirainen (dda74fe776) + + global: Never use t_push(NULL) + + A non-NULL name is expected by the debug logging. + +M src/lib-master/master-service.c +M src/lib/data-stack.c + +2021-03-31 13:11:16 +0300 Timo Sirainen (afe3adbd51) + + lib: Recalculate events' debug logging state after replacing event filters + + +M src/lib/event-log.c +M src/lib/event-log.h +M src/lib/lib-event-private.h +M src/lib/lib-event.c + +2021-05-03 19:40:23 +0300 Timo Sirainen (10dbf465e0) + + lib-index: test-mail-index-sync-ext - Fix memory leak + + +M src/lib-index/test-mail-index-sync-ext.c + +2021-04-12 22:43:57 +0200 Stephan Bosch (02de37f6c2) + + lib-smtp: smtp-server-transaction - Make sure current data command is + recorded as soon as possible. + + This prevents crashes when replies are sent early. This also prevents + crashes when invalid DATA commands are sent in succession. + +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/smtp-server-recipient.c +M src/lib-smtp/smtp-server-transaction.c +M src/lib-smtp/test-smtp-server-errors.c + +2021-04-12 22:50:48 +0200 Stephan Bosch (b9d41364d0) + + lib-smtp: smtp-server-transaction - Rename + smtp_server_transaction_last_data() to + smtp_server_transaction_data_command(). + + +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-transaction.c + +2021-04-12 22:46:17 +0200 Stephan Bosch (b98ebb2b00) + + lib-smtp: smtp-server-recipient - Rename smtp_server_recipient_last_data() + to smtp_server_recipient_data_command(). + + +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-recipient.c +M src/lib-smtp/smtp-server-transaction.c + +2021-05-03 14:07:44 +0300 Timo Sirainen (635fb845ea) + + login-common: Add client.list_type to better track which linked list client + belongs to + + Add asserts to make sure the client is always in the expected list. + +M src/login-common/client-common.c +M src/login-common/client-common.h + +2021-04-23 16:43:36 +0300 Timo Sirainen (e619fe552d) + + login-common: Fix handling destroyed_clients linked list + + The client needs to be removed from destroyed_clients linked list before + it's added to client_fd_proxies linked list. + + Broken by 1c622cdbe08df2f642e28923c39894516143ae2a + +M src/login-common/client-common.c + +2021-02-06 20:11:14 +0200 Timo Sirainen (1992a4d1d6) + + lib-index: test-mail-index-sync-ext - Fix to link with the full libindex + + +M src/lib-index/Makefile.am +M src/lib-index/test-mail-index-sync-ext.c + +2021-02-02 17:41:28 +0200 Timo Sirainen (37a5735c2d) + + lib-index: Add/update comments related to cloning maps + + +M src/lib-index/mail-index-map.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-update.c + +2021-02-02 17:25:33 +0200 Timo Sirainen (b249bb724c) + + lib-index: Don't call mail_index_modseq_sync_map_replaced() if nothing + changed + + +M src/lib-index/mail-index-sync-update.c + +2021-02-02 16:13:50 +0200 Timo Sirainen (e274d915fc) + + lib-index: Add comments to struct mail_transaction_log and related + + +M src/lib-index/mail-transaction-log-private.h + +2021-02-02 16:13:01 +0200 Timo Sirainen (4c74469147) + + lib-index: Rename MAIL_TRANSACTION_LOG_LOCK_CHANGE_TIMEOUT to .._DOTLOCK_.. + + +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log.c + +2021-02-02 16:02:58 +0200 Timo Sirainen (f309a14f3d) + + lib-index: Rename mail_transaction_log_file.lock_created to lock_create_time + + +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log.c + +2021-02-02 15:59:34 +0200 Timo Sirainen (7eb8a13552) + + lib-index: Move mail_transaction_log_file_get_modseq_next_offset() to its + own file + + This nicely isolates the modseq_cache code to its own file. + +M src/lib-index/Makefile.am +M src/lib-index/mail-transaction-log-file.c +A src/lib-index/mail-transaction-log-modseq.c + +2021-02-02 15:26:08 +0200 Timo Sirainen (52fb040144) + + lib-index: Remove unused mail_transaction_log_file.saved_tail_sync_offset + + Shrinking tail_offsets have been ignored since + 082e82792b8ac33ad42beac510441b37a3c50737 + +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h + +2021-02-02 15:24:53 +0200 Timo Sirainen (f2a5850203) + + lib-index: Rename mail_transaction_log_file.saved_tail_offset to + last_read_hdr_tail_offset + + This describes better what it's actually used for. + +M src/lib-index/mail-transaction-log-append.c +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log.c + +2021-02-02 15:07:02 +0200 Timo Sirainen (9a2f2a1149) + + lib-index: Remove mail_transaction_log.nfs_flush + + Just access it via mail_index.flags like it's done elsewhere. + +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log.c + +2021-02-02 14:59:02 +0200 Timo Sirainen (751e99be42) + + lib-index: Rename mail_transaction_log.dotlock_count to dotlock_refcount + + Also change it to a signed integer and add asserts to make sure it's >=0. + This is how refcounts are handled generally in Dovecot. + +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h + +2021-02-01 23:05:50 +0200 Timo Sirainen (63cf1888d1) + + lib-index: Update mail caching decisions explanation comment. + + +M src/lib-index/mail-cache-decisions.c + +2021-02-01 22:30:27 +0200 Timo Sirainen (f7ab72fd4e) + + lib-index: Add test-mail-cache-fields unit test + + +M src/lib-index/Makefile.am +A src/lib-index/test-mail-cache-fields.c + +2021-02-01 22:11:11 +0200 Timo Sirainen (ea548e9c48) + + lib-index: Add comments to struct mail_cache and related + + Also reorder some fields so the grouping makes more sense. + +M src/lib-index/mail-cache-fields.c +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache.h + +2021-01-25 21:10:32 +0200 Timo Sirainen (67b438b599) + + lib-index: Add comments to struct mail_cache_header and related + + +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache.h + +2021-01-29 19:11:36 +0200 Timo Sirainen (cf1c443ca8) + + lib-index: Add comments to mail-transaction-log.h + + +M src/lib-index/mail-transaction-log.h + +2021-01-25 23:06:59 +0200 Timo Sirainen (d13f33d7a9) + + lib-index: Update mail_index_mail_flags comments and add + MAIL_INDEX_MAIL_FLAG_UNUSED + + +M src/lib-index/mail-index.h + +2021-01-25 22:42:37 +0200 Timo Sirainen (9a71b83bdd) + + lib-index: Add comments to struct mail_index_ext_header and related + + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-transaction-log.h + +2021-01-25 22:10:29 +0200 Timo Sirainen (f18d48f83f) + + lib-index: Add comments to struct mail_index_header and related + + +M src/lib-index/mail-index.h + +2021-01-20 19:22:06 +0200 Timo Sirainen (60db30ce31) + + lib-index: Add comments to struct mail_index_view + + +M src/lib-index/mail-index-view-private.h + +2021-01-20 19:21:10 +0200 Timo Sirainen (52ae13770e) + + lib-index: Add comments and reorder fields in struct mail_index + + The field ordering was pretty random for some fields. The new ordering + should make more sense. + +M src/lib-index/mail-index-private.h + +2021-01-20 18:43:27 +0200 Timo Sirainen (382fe4cf01) + + lib-index: Rename mail_index.pending_log2_rotate_time to + hdr_log2_rotate_time_delayed_update + + This describes better what it does. Also add some comments explaining what + its purpose is. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync.c +M src/lib-index/mail-transaction-log.c + +2021-02-06 21:00:58 +0200 Timo Sirainen (ffe862c746) + + lib-index: mail_index_expunge_handler_t - Remove seq and context parameters + + They're not actually used anywhere. + +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache-sync-update.c +M src/lib-index/mail-cache.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-ext.c +M src/lib-index/mail-index-sync-update.c +M src/lib-index/mail-index.c + +2021-01-25 22:44:17 +0200 Timo Sirainen (7943d5ec25) + + lib-index: mail_index_register_expunge_handler() - Remove call_always + handling + + It's not needed anymore. + +M src/lib-index/mail-cache.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-ext.c +M src/lib-index/mail-index.c + +2021-01-20 18:17:27 +0200 Timo Sirainen (5068447559) + + lib-index: Remove "sync lost" callback handlers + + These were used to invalidate in-memory dovecot.index.cache cache with + mmap_disable=yes. This became unnecessary when cache file became + append-only. + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index.c + +2021-01-20 18:07:33 +0200 Timo Sirainen (15aea21ba8) + + lib-index: Move fields from struct mail_index to struct mail_index_error + + This clarifies which are error related fields. + + nodiskspace isn't actually currently used for anything, but it seems + potentially useful in the future. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-strmap.c +M src/lib-index/mail-index.c + +2021-01-20 18:04:40 +0200 Timo Sirainen (ba11772d6e) + + lib-index: Use mail_index_reset_error() when opening index + + This resets the error more cleanly than changing nodiskspace directly. + +M src/lib-index/mail-index.c + +2021-01-20 18:01:03 +0200 Timo Sirainen (25d5331503) + + lib-index: Remove mail_index.index_lock_timeout + + Nothing needs it. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index.c +M src/lib-index/mail-transaction-log-file.c + +2021-01-20 17:54:49 +0200 Timo Sirainen (2f0a0e87b2) + + lib-index: Move fields from struct mail_index to struct mail_index_settings + + This clarifies which fields are settings related. + +M src/lib-index/mail-cache-purge.c +M src/lib-index/mail-cache-transaction.c +M src/lib-index/mail-cache.c +M src/lib-index/mail-index-lock.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-strmap.c +M src/lib-index/mail-index-transaction-export.c +M src/lib-index/mail-index-write.c +M src/lib-index/mail-index.c +M src/lib-index/mail-transaction-log-append.c +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log.c + +2021-01-20 17:35:20 +0200 Timo Sirainen (706709e677) + + lib-index: Remove mail_index_view.index_sync_view + + Nothing was using it. + +M src/lib-index/mail-index-sync.c +M src/lib-index/mail-index-view-private.h + +2021-01-20 17:34:01 +0200 Timo Sirainen (920b0ad025) + + lib-index: Remove mail_index_view.transactions and related functions + + It's enough to have transaction_list, nothing needs the count. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-transaction.c +M src/lib-index/mail-index-view-private.h +M src/lib-index/mail-index-view-sync.c +M src/lib-index/mail-index-view.c + +2021-01-20 17:31:36 +0200 Timo Sirainen (ab3f44539b) + + lib-index: Change mail_index_view_get_transaction_count() into + _have_transactions() + + This allows removing mail_index_view.transactions in the next commit. + +M src/lib-index/mail-index-view.c +M src/lib-index/mail-index.h +M src/lib-storage/index/dbox-multi/mdbox-map.c + +2021-01-20 17:22:20 +0200 Timo Sirainen (09a5aeb327) + + lib-index: Rename mail_index.last_read_log_* to main_index_hdr_log_* + + Also update the comment to describe better what the variables do. + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync.c +M src/lib-index/mail-index-write.c + +2021-01-19 12:51:07 +0200 Timo Sirainen (1eea5d4468) + + lib-index: Remove mail_index_map.hdr_base + + It was just causing unnecessary complexity. Simpler to just keep + hdr_copy_buf always up-to-date and access it directly. + +M src/lib-index/mail-index-fsck.c +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-map.c +M src/lib-index/mail-index-modseq.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-ext.c +M src/lib-index/mail-index-sync-keywords.c +M src/lib-index/mail-index-sync-update.c +M src/lib-index/test-mail-index-write.c + +2021-01-29 17:45:45 +0200 Timo Sirainen (6383fd8538) + + lib-index: MAIL_TRANSACTION_LOG_VERSION_* - Add also FEATURE_ suffix for + feature macros + + This more clearly differentiates them from the other + MAIL_TRANSACTION_LOG_VERSION_* macros + +M src/lib-index/mail-transaction-log.h + +2021-01-29 17:03:34 +0200 Timo Sirainen (c697dd10a1) + + lib-index: Verify that keywords in dovecot.index header don't change + unexpectedly + + Previously this was behind DEBUG for performance reasons, but that was only + because dovecot.index file used to be modified directly. Nowadays it's rare + that the index is being re-read within the same session (most changes are + read via dovecot.index.log), so it's better to verify that things are + working correctly. + +M src/lib-index/mail-index-map-hdr.c + +2021-01-19 12:48:16 +0200 Timo Sirainen (d71c7b5cf2) + + lib-index: Add and use MAIL_INDEX_MAP_HDR_OFFSET() helper macro + + +M src/doveadm/doveadm-dump-index.c +M src/lib-index/mail-index-fsck.c +M src/lib-index/mail-index-map-hdr.c +M src/lib-index/mail-index-map.c +M src/lib-index/mail-index-modseq.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-keywords.c +M src/lib-index/mail-index-view.c +M src/lib-index/mail-index-write.c + +2021-01-19 12:42:02 +0200 Timo Sirainen (55f8474dbf) + + lib-index: Fill mail_index_map.hdr_copy_buf also when mmap()ing index + + This doesn't seem to have been necessary so far, but will be required by the + following changes. + +M src/lib-index/mail-index-map-read.c + +2021-05-03 13:15:17 +0300 Timo Sirainen (7031569672) + + imap: Fix using SETMETADATA NIL to unset value + + Broken by 923362d27d9b2428e301614673cb0efba3bf928f + +M src/imap/cmd-setmetadata.c + +2021-04-22 11:36:40 +0300 Timo Sirainen (28ca2bb152) + + master: Explain how "client_limit is lower than required" is calculated in + the warning + + +M src/config/settings-get.pl +M src/master/master-settings.c + +2021-04-21 10:41:27 -0400 Josef 'Jeff' Sipek (a200c09711) + + stats: Use only one filter for stats and exports + + Since there is no way to have a exported-only metric (i.e., all metrics are + used for statistics calculations), the exported metrics are always a subset + of all metrics. Additionally, since exported metrics have a non-NULL + exporter info while stats-only metrics have a NULL, it is very easy to check + if a given metric shoud be exported or not. + + We can combine these facts and simplify the event matching. We can simply + match against the "all metrics" filter, perform the statistics, and then + export the event if needed. + + This reduces the CPU load quite dramatically since we are no longer + duplicating the matching for exported metrics. Stats-only metrics shouldn't + see any measurable difference in performance. + +M src/stats/stats-metrics.c + +2021-04-21 11:50:54 -0400 Josef 'Jeff' Sipek (32cb941a17) + + lib: event filter - Extend existing queries if context matches + (event_filter_parse) + + Since there is no practical difference between a filter with one query and a + filter with multiple queries using the same context pointer, we can extend + the existing queries as long as there is a context pointer match. This + reduces the number of queries (and filter expressions) thereby increasing + future optimization opportunities. + +M src/lib/event-filter.c + +2021-04-21 11:47:51 -0400 Josef 'Jeff' Sipek (12507668f7) + + lib: event filter - Extend existing queries if context matches + (event_filter_merge_with_context*) + + Since there is no practical difference between a filter with one query and a + filter with multiple queries using the same context pointer, we can extend + the existing queries as long as there is a context pointer match. This + reduces the number of queries (and filter expressions) thereby increasing + future optimization opportunities. + +M src/lib/event-filter.c + +2021-04-21 11:42:55 -0400 Josef 'Jeff' Sipek (1115aeff8b) + + lib: event filter - Extend existing queries if context matches + (event_filter_add) + + Since there is no practical difference between a filter with one query and a + filter with multiple queries using the same context pointer, we can extend + the existing queries as long as there is a context pointer match. This + reduces the number of queries (and filter expressions) thereby increasing + future optimization opportunities. + +M src/lib/event-filter.c + +2021-04-21 11:52:27 -0400 Josef 'Jeff' Sipek (c18107397c) + + lib: event filter - Move add_node higher up in the file to avoid a prototype + + +M src/lib/event-filter.c + +2021-04-21 11:37:31 -0400 Josef 'Jeff' Sipek (725c7bdec7) + + lib: event filter - Add filter op argument to add_node + + +M src/lib/event-filter.c + +2021-04-21 11:19:31 -0400 Josef 'Jeff' Sipek (d8d2f0ea3c) + + lib: event filter - Generalize query construction helpers + + If instead of taking the internal query, they take a filter expression node, + they can be reused by optimizations in subsequent commits. + +M src/lib/event-filter.c + +2021-04-26 19:49:22 +0300 Timo Sirainen (714fb52a99) + + lib: Rename event_find_field() to event_find_field_nonrecursive() and make + it public + + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-03-16 19:13:23 +0200 Timo Sirainen (b3460178be) + + lib: Reformat lib-event to avoid long lines + + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-03-16 19:09:06 +0200 Timo Sirainen (07437af0e5) + + lib: Rename event_find_field*() to event_find_field_recursive*() + + This clarifies how it works. + +M src/auth/test-auth-request-fields.c +M src/lib-dict/dict.c +M src/lib/event-filter.c +M src/lib/lib-event.c +M src/lib/lib-event.h +M src/lib/test-event-filter-expr.c +M src/lib/test-event-filter.c +M src/stats/event-exporter-fmt-json.c +M src/stats/event-exporter-fmt-tab-text.c +M src/stats/stats-metrics.c + +2021-03-16 18:26:20 +0200 Timo Sirainen (30fd8eada2) + + lib: event_find_field() - Rewrite without using recursion + + This simplifies the following change. + +M src/lib/lib-event.c + +2021-03-09 16:32:35 +0200 Timo Sirainen (f9177a5788) + + lib: event_match_field() - Avoid recursing event fields twice + + event_find_field() is already recursive. + +M src/lib/event-filter.c + +2021-03-09 16:31:20 +0200 Timo Sirainen (012a453862) + + lib: Split off event_has_category_nonrecursive() + + +M src/lib/event-filter.c + +2021-03-11 18:55:21 +0200 Timo Sirainen (66d3263685) + + lib-master: test-event-stats - Fix "large event id" test to check for END + + Otherwise the END would be visible in the next test. + +M src/lib-master/test-event-stats.c + +2021-03-11 18:29:45 +0200 Timo Sirainen (a6437c7668) + + lib-master: test-event-stats - Avoid busy-looping while waiting for "test + done" file + + +M src/lib-master/test-event-stats.c + +2021-01-27 10:55:14 +0200 Aki Tuomi (c0f394fe76) + + lib: event importing - Do not accept empty field name + + +M src/lib/lib-event.c + +2020-12-15 09:15:56 +0200 Aki Tuomi (e3bd0f78e1) + + lib: lib-event - Use named initializators for passthrough event + + +M src/lib/lib-event.c + +2021-04-26 15:39:36 +0300 Aki Tuomi (94f8661813) + + m4: Include local copy of pkg.m4 + + We need features not present in early versions. The variable=name support + has been there since 1.7.4 of pkg-config. + +M configure.ac +A m4/pkg.m4 + +2021-04-21 19:18:07 +0300 Timo Sirainen (0b49075d90) + + lib-storage: Avoid logging the same mail istream read error multiple times + + +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2021-04-26 12:02:58 +0300 Aki Tuomi (226d78ac75) + + master: Notify systemd after we are really stopped + + +M src/master/main.c + +2021-04-26 08:39:50 +0300 Aki Tuomi (2465a431d4) + + Makefile.am: Fix systemd detection mess in automake + + +M Makefile.am +M configure.ac +A m4/want_systemd.m4 + +2021-04-26 08:29:02 +0300 Aki Tuomi (8df32a724b) + + dovecot.service: Set type to notify only when compiling with systemd + + +M Makefile.am +M configure.ac +M dovecot.service.in + +2021-04-26 08:38:14 +0300 Aki Tuomi (599271fcc1) + + Makefile.am: Make systemd service file generation more readable + + +M Makefile.am + +2021-04-26 09:38:44 +0300 Aki Tuomi (2353fd43af) + + configure.ac: Move CFLAGS to right place + + Now it's in middle of passdb displaying + +M configure.ac + +2021-03-24 16:09:51 +0200 Timo Sirainen (eb6509f963) + + lib-storage: Fix detecting duplicate nodes in mailbox list index + + The duplicates were checked only for root nodes, not for child nodes. + +M src/lib-storage/list/mailbox-list-index.c + +2021-04-08 17:08:54 +0100 Siavash Tavakoli (49f4107082) + + driver-mysql: Rollback a failed multi-statement transaction + + If transaction failed, send "ROLLBACK" statement. + +M src/lib-sql/driver-mysql.c + +2021-04-07 16:44:00 +0100 Siavash Tavakoli (0795e4cc62) + + driver-mysql: Avoid BEGIN/COMMIT for single statement transactions + + To reduce unnecessary load to database. + +M src/lib-sql/driver-mysql.c + +2021-04-01 20:39:27 +0300 Timo Sirainen (0f66865e0e) + + lib-imap: imap_bodystructure_write() - Return error on corruption instead of + assert-crash + + This could happen if broken message_parts came from cache and + message_part->data was newly read from the mail input. + +M src/lib-imap-storage/imap-msgpart.c +M src/lib-imap/fuzz-imap-bodystructure.c +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/imap-bodystructure.h +M src/lib-imap/test-imap-bodystructure.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/index-mail.c + +2021-04-08 15:04:42 +0300 Timo Sirainen (4db18b7413) + + lib-storage: Split off index_mail_parse_bodystructure_full() + + +M src/lib-storage/index/index-mail.c + +2021-04-09 14:09:17 +0300 Timo Sirainen (12ae2af6ac) + + lib-imap: fuzz-imap-bodystructure - Change failures to i_panic() instead of + i_fatal() + + +M src/lib-imap/fuzz-imap-bodystructure.c + +2021-03-04 09:52:40 +0200 Aki Tuomi (641cfdb62a) + + NEWS: Mention XZ/LZMA removal. + + +M NEWS + +2021-03-02 10:55:53 +0200 Aki Tuomi (b2f9c2f538) + + NEWS: Update news for 2.3.14 + + +M NEWS + +2021-03-30 21:12:41 +0200 Stephan Bosch (a5209c83c3) + + lib-smtp: smtp-params - Make explicit which extra parameters can be written + by smtp_params_*_write(). + + This can be used to prevent sending unsupported parameters to the remote + server, even when these are listed in extra_parameters. Before, blindly + proxying parameters would cause MAIL/RCPT error replies from the remote + server. + +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h +M src/lib-smtp/test-smtp-params.c + +2021-03-30 21:06:58 +0200 Stephan Bosch (4987b516aa) + + lib-smtp: smtp-client-connection - Explicitly specify which MAIL/RCPT + parameters are added by extra capabilities. + + This is used in later commit to limit which custom parameters are actually + sent to the server based on the capabilities supported by said server. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h +M src/lib-smtp/smtp-client.h +M src/lmtp/lmtp-proxy.c + +2021-03-30 21:48:24 +0200 Stephan Bosch (b37ecc4f02) + + lib-smtp: smtp-client-connection - Prevent recording extra capabilities from + server more than once. + + +M src/lib-smtp/smtp-client-connection.c + +2021-03-30 21:45:33 +0200 Stephan Bosch (8bf233ddf3) + + lib-smtp: smtp-client-connection - Prevent duplicate registrations for extra + capabilities. + + +M src/lib-smtp/smtp-client-connection.c + +2021-03-31 12:33:38 +0200 Stephan Bosch (47203e9f30) + + lib-smtp: smtp-client-connection - Move + smtp_client_connection_find_extra_capability(). + + +M src/lib-smtp/smtp-client-connection.c + +2021-03-30 21:33:17 +0200 Stephan Bosch (af677f5b78) + + lib-smtp: smtp-client-connection - Change extra capability registration to + use a struct. + + This is needed for adding additional features in later commit. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-connection.h +M src/lib-smtp/smtp-client-private.h +M src/lib-smtp/smtp-client.h +M src/lmtp/lmtp-proxy.c + +2021-03-30 21:41:48 +0200 Stephan Bosch (1a77fca29f) + + lib-smtp: smtp-client-connection - Fix typo in function name. + + +M src/lib-smtp/smtp-client-connection.c + +2021-03-31 00:06:29 +0200 Stephan Bosch (985f21ad5a) + + lmtp: lmtp-commands - Drop XRCPTFORWARD parameter once processed. + + This prevents it from popping up elsewhere. This for example crudely fixes a + problem in the proxy where XRCPTFORWARD was sent even without backend server + support. + +M src/lmtp/lmtp-commands.c + +2021-04-19 12:46:44 +0300 Timo Sirainen (cdbb581436) + + imap: NOTIFY - Fix crash if client disconnects while sending FETCH + notification (try #2) + + Continues the incomplete fix for c4f4058d16096f23eea0b3182205d6653f5954dd + + Fixes: Panic: Trying to close mailbox INBOX with open transactions + +M src/imap/imap-client.c + +2021-04-16 16:13:39 +0300 Timo Sirainen (673a9e1d17) + + login-common: Fix memory leak if anvil query is aborted + + +M src/login-common/client-common.h +M src/login-common/sasl-server.c + +2021-04-16 11:18:15 +0300 Aki Tuomi (50b5ee12db) + + virtual: virtual-mail - Use index_mail_set_seq to ensure cleanup + + Forgotten in 67ab2070cf513179382b564871f2a0f177987cc9 + +M src/plugins/virtual/virtual-mail.c + +2021-04-16 11:16:36 +0300 Aki Tuomi (0cd683c086) + + virtual: virtual-mail - Pass wanted_headers and wanted_fields to backend + mails only + + Broken in 67ab2070cf513179382b564871f2a0f177987cc9 + +M src/plugins/virtual/virtual-mail.c + +2021-04-16 10:01:45 +0300 Aki Tuomi (e5098ff2b0) + + virtual: virtual-mail - Use index_mail_free + + Since we are using index_mail_init, we need to use index_mail_free to free + up the virtual mail. + +M src/plugins/virtual/virtual-mail.c + +2021-04-16 10:24:22 +0300 Aki Tuomi (df46da1ace) + + virtual: virtual-mail - Free wanted headers in close if we are freeing + + Simplifies next change + +M src/plugins/virtual/virtual-mail.c + +2021-04-16 10:03:33 +0300 Aki Tuomi (448330c320) + + virtual: virtual-mail - Free up mails in virtual_mail_close if we are + freeing up + + Makes next change easier + +M src/plugins/virtual/virtual-mail.c + +2021-04-14 18:08:03 +0300 Timo Sirainen (829b04676c) + + lib: Add comment to CALLBACK_TYPECHECK() macro + + +M src/lib/macros.h + +2021-03-31 03:08:26 +0100 Siavash Tavakoli (0d252dccb3) + + lib-index: Add "mail_cache_lookup" event + + Adds new event for cache lookups with lookup name as "field" event field. + +M src/lib-index/mail-cache-lookup.c + +2021-03-31 17:28:46 +0100 Siavash Tavakoli (fa7a490bc3) + + lib-index: Small refactor in mail_cache_lookup_field() + + Makes it easier to emit event in next commit regardless of code path. + +M src/lib-index/mail-cache-lookup.c + +2021-03-30 00:37:59 +0100 Siavash Tavakoli (d6ceec7f3a) + + lib-storage: Add "mail_expunged" event + + Emitted when a message is actually expunged. Has UID as a field. + +M src/lib-storage/mail-storage.c + +2021-03-29 13:41:55 +0100 Siavash Tavakoli (d5fe1b3c75) + + lib-storage, plugins/virtual: Use mail_sync_notify() + + Instead of calling sync_notify vfunc directly. + +M src/lib-storage/index/dbox-multi/mdbox-sync.c +M src/lib-storage/index/dbox-single/sdbox-sync.c +M src/lib-storage/index/imapc/imapc-sync.c +M src/lib-storage/index/maildir/maildir-sync-index.c +M src/lib-storage/index/mbox/mbox-sync.c +M src/plugins/virtual/virtual-sync.c + +2021-03-29 13:41:32 +0100 Siavash Tavakoli (8f9b9731e6) + + lib-storage: Add mailbox_sync_notify() + + Instead of calling sync_notify vfunc directly everywhere. + +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.c + +2021-03-29 13:01:40 +0100 Siavash Tavakoli (0972d42cdb) + + lib-storage: Emit "mail_expunge_requested" event + + Adds a new event, "mail_expunge_requested" which is emitted when a message + is marked to being expunged. + +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail.c + +2021-02-10 13:57:08 +0200 Aki Tuomi (c8fa10672b) + + lib-storage: Emit "mail_opened" event when mails opened + + Adds a new event, "mail_opened" with "reason" as field. Also drop duplicate + event in index_mail_init_stream(). + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail.c + +2021-04-06 00:38:06 +0100 Siavash Tavakoli (9a8449d815) + + lib-storage: Include "age_days" field in mail.event + + Goes back one week, if mail age information is known, an integer field is + added with value of mail age in number of days. + +M src/lib-storage/index/index-mail.c + +2021-03-31 16:08:06 +0100 Siavash Tavakoli (67ab2070cf) + + plugins/virtual: Use index_mail_init() to initialize the mail + + Cleans up duplicated code. Also, index_mail_init initializes mail.event as + well. Something that was missing previously. + +M src/plugins/virtual/virtual-mail.c + +2021-03-31 16:01:02 +0100 Siavash Tavakoli (3fe38329a9) + + lib-storage: Refactor index_mail_init() to make it more reusable + + Adds arguments for two memory pools, to be set for mail.pool and + mail.data_pool. If data_pool is NULL, a pool is allocated but mail_pool is + required. + +M src/lib-storage/index/dbox-common/dbox-mail.c +M src/lib-storage/index/imapc/imapc-mail.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h +M src/lib-storage/index/pop3c/pop3c-mail.c + +2021-03-11 14:14:53 +0200 Timo Sirainen (5dd81f98a9) + + lib-storage: Recreate mail.event when active mail is changed + + This makes sure that the two mails' events are treated completely + independently without any accidental spilling. It also prevents wasting + memory if each mail changes the event and grows the memory pool. + +M src/lib-storage/index/index-mail.c + +2021-04-12 21:18:05 +0200 Stephan Bosch (4d76fa500b) + + lib-smtp: fuzz-smtp-server - Implement all callbacks required for full + transaction. + + Before required RCPT and DATA callbacks were omitted, causing assertion + failures when the fuzzer reached the RCPT stage. + +M src/lib-smtp/fuzz-smtp-server.c + +2021-04-12 21:14:07 +0200 Stephan Bosch (99b3f881f8) + + lib-test: fuzzer - Fix FD-based fuzzing to only shutdown input FD upon end + of data. + + Before, it closed the whole socket once the data input ended. This for + example caused the SMTP server fuzzer to end before all replies were sent. + This shortened the test and could have hidden bugs that occur later in the + SMTP transaction. + +M src/lib-test/fuzzer.c +M src/lib-test/fuzzer.h + +2021-04-12 21:12:27 +0200 Stephan Bosch (d14c6b5e52) + + lib-smtp: smtp-reply - Add debug message for reply send error. + + This makes it a little clearer at what point the connection loss or error + was noticed and for which command/reply. + +M src/lib-smtp/smtp-server-reply.c + +2021-04-14 11:57:39 +0300 Timo Sirainen (6a3b1ac4fb) + + lib-lua: Fix compiler warning with dlua_pcall_yieldable() + + +M src/lib-lua/dlua-script-private.h + +2021-04-09 11:35:05 +0200 Markus Valentin (c3fc5c9060) + + lib-storage: Make sure listescape can work correctly with shared namespaces + + This makes sure that if storage_name_escape_char is set, shared mailboxes do + not return the invalid/unescaped mailbox storage_name internally which could + result in failures like "Invalid mailbox name: Name must not have '/' + character" even when using the listescape plugin. + + Broken by 5fd5ad3a2be6708e81f8dcfcbb06a3957dddd276 + +M src/lib-storage/mailbox-list.c + +2021-04-01 21:42:02 +0300 Timo Sirainen (1d9b4e1400) + + lib: Fix buffer_t aliasing problems with LTO + + This changes the buffer_t slightly, which requires adding extra braces when + buffer_t contents are directly defined. + + This changes Dovecot to require C11 compatible compiler, because it uses + anonymous union and struct. GNU99 extensions are also enough. + +M src/anvil/anvil-settings.c +M src/auth/auth-settings.c +M src/config/config-settings.c +M src/config/settings-get.pl +M src/dict/dict-settings.c +M src/director/director-settings.c +M src/dns/dns-client-settings.c +M src/doveadm/doveadm-settings.c +M src/imap-hibernate/imap-hibernate-settings.c +M src/imap-login/imap-login-settings.c +M src/imap-urlauth/imap-urlauth-login-settings.c +M src/imap-urlauth/imap-urlauth-settings.c +M src/imap-urlauth/imap-urlauth-worker-settings.c +M src/imap/imap-settings.c +M src/indexer/indexer-settings.c +M src/indexer/indexer-worker-settings.c +M src/ipc/ipc-settings.c +M src/lib/buffer.c +M src/lib/buffer.h +M src/lib/test-buffer.c +M src/lmtp/lmtp-settings.c +M src/log/log-settings.c +M src/old-stats/stats-settings.c +M src/plugins/fts-lucene/Snowball.cc +M src/plugins/fts-lucene/lucene-wrapper.cc +M src/pop3-login/pop3-login-settings.c +M src/pop3/pop3-settings.c +M src/replication/aggregator/aggregator-settings.c +M src/replication/replicator/replicator-settings.c +M src/stats/stats-settings.c +M src/submission-login/submission-login-settings.c +M src/submission/submission-settings.c + +2021-04-01 21:37:27 +0300 Timo Sirainen (4e5bb6738d) + + lib: buffer - Change real_buffer.r_buffer type to const void * + + +M src/lib/buffer.c + +2021-04-01 12:47:15 +0300 Timo Sirainen (831c95f67d) + + imap: Fix accessing uninitialized variable warning with LTO + + There doesn't seem to be any other way to quiet this warning, although it's + wrong. + +M src/imap/imap-master-client.c + +2021-04-01 12:45:39 +0300 Timo Sirainen (21bb5d5224) + + doveadm dict: Handle missing parameters without crashing + + +M src/doveadm/doveadm-dict.c + +2021-04-01 12:20:46 +0300 Timo Sirainen (7831a1f082) + + global: Fix accessing uninitialized variables on unit test failures + + +M src/lib-index/test-mail-index-modseq.c +M src/lib/test-strnum.c +M src/lib/test-time-util.c + +2021-04-01 12:33:33 +0300 Timo Sirainen (7da0d129c5) + + lib-imap: imap_envelope_parse() - Refactor to avoid LTO warnings + + The original code was correct, but gcc with LTO still gave warnings about + potentially uninitialized envlp_r and error_r. + +M src/lib-imap/imap-envelope.c + +2021-04-01 12:22:37 +0300 Timo Sirainen (a879354bbf) + + lib: test-array - Fix LTO compiler warnings + + -flto correctly realizes that the source buffer size is 1, while memcpy() is + trying to copy UINT_MAX. Try to hide this by allocating the source buffer + dynamically. The intention is to assert-crash anyway before the memcpy() is + reached. + +M src/lib/test-array.c + +2021-04-13 12:45:45 +0300 Aki Tuomi (7473d1c11e) + + lib-compression: ostream-zstd - Do not return 0 as default + + This is accepted by the library but does complicate things with dovecot. + +M src/lib-compression/ostream-zstd.c + +2021-04-13 12:45:23 +0300 Aki Tuomi (3fd17f53c9) + + lib-compression: ostream-zstd - Fix assert on value range + + +M src/lib-compression/ostream-zstd.c + +2021-04-10 13:52:15 +0200 Arjen de Korte (397ca180b8) + + doc/openssl.cnf: Increase default_bits to 2048 + + NIST guidelines mandate that all SSL certificates must be of at least 2048 + key length + +M doc/dovecot-openssl.cnf + +2021-03-26 14:10:37 +0200 Aki Tuomi (096b7122b9) + + global: Update default TLS protocol to TLSv1.2 + + +M doc/example-config/conf.d/10-ssl.conf +M src/lib-master/master-service-ssl-settings.c +M src/lib-storage/mail-storage-settings.c + +2021-04-06 15:42:22 +0300 Aki Tuomi (9301b1042b) + + lib-ssl-iostream: Accept TLS version case-insensitive + + +M src/lib-ssl-iostream/iostream-openssl-common.c + +2021-03-26 14:11:48 +0200 Aki Tuomi (585e09f4d7) + + lib-ssl-iostream: Add additional supported protocols + + ANY - Any protocol version accepted TLSv1.3 - Self-explanatory LATEST - The + newest protocol only + +M src/lib-ssl-iostream/iostream-openssl-common.c + +2021-03-26 12:08:40 +0200 Aki Tuomi (57aa5d271f) + + lib-master: Add ssl_cipher_suites + + +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/master-service-ssl-settings.h +M src/lib-storage/mail-storage-settings.c +M src/lib-storage/mail-storage-settings.h + +2021-04-01 12:41:40 +0300 Aki Tuomi (4b8d368a91) + + imap-zlib: Support per-algorithm compression level + + +M src/config/old-set-parser.c +M src/plugins/imap-zlib/imap-zlib-plugin.c + +2021-03-30 19:05:42 +0300 Aki Tuomi (46eb5a53d1) + + zlib: Check that compression level is within supported range + + +M src/plugins/zlib/zlib-plugin.c + +2021-03-30 19:04:31 +0300 Aki Tuomi (d4d2eec8a4) + + imap-zlib: Check that compression level is within supported range + + +M src/plugins/imap-zlib/imap-zlib-plugin.c + +2021-03-30 19:03:30 +0300 Aki Tuomi (9b420dde6e) + + fs-compress: Check that compression range is within supported range + + +M src/plugins/fs-compress/fs-compress.c + +2021-04-01 09:26:10 +0300 Aki Tuomi (97628ea00b) + + lib-compression: Implement min/default/max getters + + +M src/lib-compression/compression.c +M src/lib-compression/ostream-bzlib.c +M src/lib-compression/ostream-lz4.c +M src/lib-compression/ostream-zlib.c +M src/lib-compression/ostream-zlib.h +M src/lib-compression/ostream-zstd.c + +2021-03-30 19:01:20 +0300 Aki Tuomi (250a7ea9db) + + lib-compression: Add compression level range to handlers + + +M src/lib-compression/compression.h + +2021-03-30 18:54:42 +0300 Aki Tuomi (fa63cbcd70) + + lib-compression: Use designated initializers for compression handlers + + +M src/lib-compression/compression.c + +2021-04-01 09:51:09 +0300 Aki Tuomi (ca81d36252) + + m4: want_zstd.m4 - Detect is ZSTD_minCLevel is present + + +M m4/want_zstd.m4 + +2021-02-05 14:48:52 -0500 Josef 'Jeff' Sipek (0a81b9bccb) + + lib-compression: Be explicit about xz magic number including a \0 + + +M src/lib-compression/compression.c + +2021-04-09 01:49:21 +0200 Stephan Bosch (4e55a32d71) + + lib-smtp: test-smtp-server-errors - Add actual HELO tests to "bad HELO" + test. + + Before, it only tested the EHLO command. + +M src/lib-smtp/test-smtp-server-errors.c + +2021-04-09 01:43:38 +0200 Stephan Bosch (642ecfa43e) + + lib-smtp: test-smtp-server-errors - Add correct command test to "bad HELO" + test. + + +M src/lib-smtp/test-smtp-server-errors.c + +2021-04-09 01:25:59 +0200 Stephan Bosch (b3a21d8622) + + lib-smtp: test-smtp-server-errors - Properly check server reply in "bad + HELO" test. + + +M src/lib-smtp/test-smtp-server-errors.c + +2021-04-09 01:29:06 +0200 Stephan Bosch (f97765d1b7) + + lib-smtp: test-smtp-server-errors - Rename "bad EHLO" test to "bad HELO". + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-09-11 21:08:03 +0200 Stephan Bosch (896f120709) + + lib-smtp: smtp-server-cmd-helo - Fix panic occurring for default HELO reply. + + This only fails for the HELO command; the EHLO command is unaffected. The + default reply routine is not actually used at the moment, but it is used by + the fuzzer. + + Panic was: + + Panic: file smtp-server-cmd-helo.c: line 160 + (smtp_server_cmd_ehlo_reply_create): assertion failed: (cmd->cmd->reg->func + == smtp_server_cmd_ehlo) + +M src/lib-smtp/smtp-server-cmd-helo.c + +2020-09-11 22:40:31 +0200 Stephan Bosch (0cf64cf8f1) + + lib-smtp: Reformat smtp-server-cmd-helo.c. + + +M src/lib-smtp/smtp-server-cmd-helo.c + +2021-03-23 10:27:23 +0100 Stephan Bosch (905668e0ac) + + lib-smtp: smtp-server-cmd-data - Fix crash occurring when BDAT is the last + in a too long sequence of bad commands. + + When smtp_server_reply() detects that too many replies were sent regarding + syntax errors, it will terminate the connection. Most commands will just + stop processing and exit when a reply is submitted, so no crash occurs for + those. However, BDAT will try to skip the data block, so that it will not be + interpreted as a large set of input commands, which subsequentely crashes + because the command parser is already gone after terminating the connection. + +M src/lib-smtp/smtp-server-cmd-data.c + +2021-03-25 10:59:19 +0200 Timo Sirainen (444b4afdf0) + + push-notification: Fix logging initialization error + + +M src/plugins/push-notification/push-notification-drivers.c + +2021-03-24 09:43:17 +0100 Markus Valentin (81ec456313) + + imapc: imapc_list_get_fs() - Set index_pvt_dir for mailbox_list_settings + + To allow using private indexes with imapc storage the index_pvt_dir must be + set when listing the mailbox. Previously this did not happen because the + index_pvt_dir was simply NULL, now the value is copied from the + imapc_mailbox_list. + +M src/lib-storage/index/imapc/imapc-list.c + +2021-03-30 16:50:13 +0300 Timo Sirainen (57069b23e6) + + lib-index: Avoid accessing already freed "reason" when purging + + Broken by 4b60d609c05d334d29a72c6dbbe301a66f518089 + +M src/lib-index/mail-cache-purge.c + +2021-03-30 11:00:57 +0100 Siavash Tavakoli (a64539fba0) + + lib-ssl-iostream: Avoid calling X509_check_ip_asc if malformed input was + used + + Try to match certificate using "X509_check_ip_asc" only when + "X509_check_host" didn't report an internal error or malformed input. + +M src/lib-ssl-iostream/iostream-openssl-common.c + +2021-03-24 11:01:34 -0400 Josef 'Jeff' Sipek (4ccc5f9571) + + lib-lua: Document the DLUA_WRAP_C_DATA macro + + +M src/lib-lua/dlua-wrapper.h + +2020-08-13 20:01:41 +0300 Aki Tuomi (18cf172fc0) + + oauth2-jwt: Use int64_t instead time_t for portability + + +M src/lib-oauth2/oauth2-jwt.c + +2021-03-21 22:15:48 +0000 Siavash Tavakoli (af41ad228f) + + lib-ssl-iostream: Use OpenSSL's X509_check_host and X509_check_ip_asc if + available + + Make use of "X509_check_host()" and "X509_check_ip_asc()" if OpenSSL version + used has support for these functions. Revert back to previous custom + implementation in case either is not available. + + Hosts are checked with partial wildcards (e.g. foo*.example.com) disabled. + If host name check fails, check against IP addresses in the certificate. + +M src/lib-ssl-iostream/iostream-openssl-common.c + +2021-03-21 22:14:55 +0000 Siavash Tavakoli (202a65fb59) + + m4: Add HAVE_X509_CHECK_HOST, HAVE_X509_CHECK_IP, and HAVE_X509_CHECK_IP_ASC + + Defined when compiling against an OpenSSL version supporting + "X509_check_host", + "X509_check_ip()", and "X509_check_ip_asc()" respectively. + +M m4/ssl.m4 + +2021-03-18 12:20:35 +0000 Siavash Tavakoli (8d84e36e31) + + lib-ssl-iostream: Ignore case when checking certificate name + + Host name case must be ignored when cheking with certificate. + +M src/lib-ssl-iostream/iostream-openssl-common.c + +2021-03-22 13:00:31 +0200 Timo Sirainen (ca86ef368a) + + lib: ioloop - Remove unused timer_is_larger() macro + + +M src/lib/ioloop.c + +2021-03-01 12:56:21 +0200 Timo Sirainen (d92eb240cd) + + lib: test-ioloop - Make sure recreating 0-timeout in callback works + + +M src/lib/ioloop.c +M src/lib/test-ioloop.c + +2021-03-01 13:03:16 +0200 Timo Sirainen (fac27f192d) + + lib: ioloop - Fix 0 ms timeouts to trigger without waiting 2ms between calls + + +M src/lib/ioloop.c +M src/lib/test-ioloop.c + +2021-03-01 13:02:40 +0200 Timo Sirainen (adad8ad7fc) + + lib-test: test_assert_ucmp() - Fix typo to make it compile + + +M src/lib-test/test-common.h + +2021-03-22 13:04:15 +0100 Markus Valentin (1fc91d56d4) + + lib-compression: Get error with i_stream_get_error() so it's recursive + + In some cases the iostream.error was NULL so the errno default message was + used. This fixes an regression introduced by 8b6142f9ba9. + +M src/lib-compression/istream-decompress.c + +2021-03-23 09:02:06 +0200 Aki Tuomi (b72e08e519) + + lib-dict: dict-lua - Do not free pool after iteration finishes + + Otherwise we get double-free from gc. + + Broken in 1e67b93cc9f469bb144fc890a6cb9b9b9cd20811 + +M src/lib-dict/dict-iter-lua.c + +2021-03-23 12:32:13 +0200 Timo Sirainen (9c58ce8e50) + + man: doveconf - Fix -P/ typo to just -P + + +M doc/man/doveconf.1.in + +2021-03-23 12:31:46 +0200 Timo Sirainen (c4d7aea669) + + man: doveconf - Document -s parameter + + +M doc/man/doveconf.1.in + +2021-01-27 20:26:26 +0200 Timo Sirainen (e453a424d9) + + doveadm zlibconnect: Support multiple compression algorithms + + Unfortunately they don't work very well, because only the deflate ostream + supports flushing ostream before closing it. + +M src/doveadm/doveadm-zlib.c + +2021-01-27 19:50:38 +0200 Timo Sirainen (0871db37b3) + + doveadm zlibconnect: Support automatically starting compression on COMPRESS + command + + The previous method of using ctrl-d wasn't really suitable for scripting. + +M src/doveadm/doveadm-zlib.c + +2021-01-27 20:29:11 +0200 Timo Sirainen (9a1eba3f41) + + lib-compression: Fix potential hangs with non-blocking istreams + + +M src/lib-compression/istream-lz4.c +M src/lib-compression/istream-lzma.c +M src/lib-compression/istream-zlib.c +M src/lib-compression/istream-zstd.c + +2021-01-27 20:34:29 +0200 Timo Sirainen (14ab7acd03) + + lib: i_stream_read() - Fix assert with DEBUG enabled + + It doesn't matter if the data buffer changes for <=0 return value if the + buffer was previously empty. + +M src/lib/istream.c + +2021-02-04 02:15:22 +0200 Timo Sirainen (e6d8ac87a2) + + lib-storage: mailbox_list_init_fs() - Add event_parent + + +M src/lib-storage/index/dbox-common/dbox-storage.c +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-list.h + +2021-02-04 02:00:28 +0200 Timo Sirainen (040ec09363) + + lib-storage: Rename mail_storage_service_input.parent_event to event_parent + + This makes it more consistent with other settings. + +M src/imap/main.c +M src/lda/main.c +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h +M src/lmtp/lmtp-local.c +M src/plugins/quota/quota-status.c + +2021-02-04 01:58:25 +0200 Timo Sirainen (dd0049bf67) + + lib-fs: Rename fs_settings.event to event_parent + + This makes it more consistent with other settings. + +M src/lib-fs/fs-api.c +M src/lib-fs/fs-api.h +M src/lib-fs/fs-dict.c +M src/lib-storage/mail-user.c + +2021-02-04 01:36:52 +0200 Timo Sirainen (84da97fd4e) + + lib-dict: Set connections' event_parent correctly + + dict->dict.event is NULL at this point. + +M src/lib-dict/dict-client.c +M src/lib-dict/dict-memcached-ascii.c +M src/lib-dict/dict-memcached.c + +2021-02-04 01:27:34 +0200 Timo Sirainen (afbc5c30e4) + + auth: db-sql - Fill sql_settings.event_parent + + +M src/auth/db-sql.c + +2021-02-04 01:16:12 +0200 Timo Sirainen (ef3f457051) + + global: Set http_client_settings.event_parent when possible + + +M src/auth/db-oauth2.c +M src/plugins/fts-solr/solr-connection.c +M src/plugins/fts/fts-parser-tika.c + +2021-02-04 01:13:40 +0200 Timo Sirainen (0b1beeccb0) + + fts-solr: solr-connection - Add parent event + + +M src/plugins/fts-solr/fts-backend-solr-old.c +M src/plugins/fts-solr/fts-backend-solr.c +M src/plugins/fts-solr/solr-connection.c +M src/plugins/fts-solr/solr-connection.h + +2021-02-04 01:10:57 +0200 Timo Sirainen (91be621311) + + global: Set dns_lookup_settings.event_parent + + +M src/auth/auth-request.c +M src/lib-http/http-client-host.c +M src/lib-imap-client/imapc-connection.c +M src/lib-program-client/program-client-remote.c +M src/lib-smtp/smtp-client-connection.c +M src/lib-storage/index/pop3c/pop3c-client.c + +2021-02-04 01:09:57 +0200 Timo Sirainen (27c92f1d02) + + imapc: Add parent event + + +M src/auth/passdb-imap.c +M src/lib-imap-client/imapc-client-private.h +M src/lib-imap-client/imapc-client.c +M src/lib-imap-client/imapc-client.h +M src/lib-imap-client/test-imapc-client.c +M src/lib-storage/index/imapc/imapc-storage.c + +2021-02-04 01:07:38 +0200 Timo Sirainen (132e9b08d6) + + pop3c: Add parent event + + +M src/lib-storage/index/pop3c/pop3c-client.c +M src/lib-storage/index/pop3c/pop3c-client.h +M src/lib-storage/index/pop3c/pop3c-storage.c + +2021-02-04 01:01:42 +0200 Timo Sirainen (3d7cd9a60e) + + global: Set dict_settings.event_parent when possible + + +M src/auth/db-dict.c +M src/auth/db-oauth2.c +M src/lib-fs/fs-dict.c +M src/lib-storage/index/index-attribute.c +M src/plugins/acl/acl-lookup-dict.c +M src/plugins/last-login/last-login-plugin.c +M src/plugins/notify-status/notify-status-plugin.c +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota.c + +2021-03-22 16:24:20 +0200 Aki Tuomi (26bfe7b6a7) + + lib-lua: dlua-threads - pop thread table after manipulation + + Forgot on a84bfdaf6df8fd6a4cbbf0845c18b09e6ceada36 + +M src/lib-lua/dlua-thread.c + +2021-02-22 15:29:45 +0200 Aki Tuomi (80156c4f7b) + + auth: Fix Makefile variables for Lua + + Otherwise automake complains about touching the variables in many places. + +M src/auth/Makefile.am + +2021-02-05 15:40:49 +0200 Aki Tuomi (8276f856d6) + + dovecot-config: Include used Lua details + + +M Makefile.am +M configure.ac +M dovecot-config.in.in +M m4/dovecot.m4 + +2021-02-05 15:21:46 +0200 Aki Tuomi (20660943f8) + + push-notification-driver-lua: Use dlua_pcall + + +M src/plugins/push-notification/push-notification-driver-lua.c + +2021-02-05 15:17:44 +0200 Aki Tuomi (96bd734b7a) + + mail-lua: Pop return values after use + + +M src/plugins/mail-lua/mail-lua-plugin.c + +2021-02-05 15:17:37 +0200 Aki Tuomi (bcf502353d) + + mail-lua: Use dlua_pcall + + +M src/plugins/mail-lua/mail-lua-plugin.c + +2021-02-05 15:13:26 +0200 Aki Tuomi (1265f55524) + + auth: db-lua - Use dlua_pcall + + +M src/auth/db-lua.c + +2021-02-16 09:21:58 +0200 Aki Tuomi (fcf86bb7b2) + + lib-lua: Fix script loading + + Handle error cases correctly. + +M src/lib-lua/dlua-script.c + +2021-02-05 13:34:27 +0200 Aki Tuomi (fe1c3e670f) + + lib-lua: Use dlua_pcall + + +M src/lib-lua/dlua-script.c +M src/lib-lua/test-lua.c + +2021-02-05 13:33:47 +0200 Aki Tuomi (b78bc8f862) + + lib-lua: Add dlua_pcall + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c + +2021-02-05 13:41:24 +0200 Aki Tuomi (95e6c3974e) + + lib-lua: dlua-dovecot - Ensure script is not NULL + + +M src/lib-lua/dlua-dovecot.c + +2021-02-16 12:47:17 +0200 Aki Tuomi (22d54c6e25) + + lib-lua: Define LUA_OK if missing + + It's defined since lua 5.2, and we support lua 5.1. + +M src/lib-lua/dlua-compat.h + +2021-02-19 15:20:07 +0200 Aki Tuomi (5c3ec087bf) + + lib-lua: Reformat macros in dlua-script-private.h + + +M src/lib-lua/dlua-script-private.h + +2021-03-22 10:36:24 +0200 Aki Tuomi (12f0271e17) + + lib-lua: Add callback typecheck for dlua_pcall_yieldable + + +M src/lib-lua/dlua-resume.c +M src/lib-lua/dlua-script-private.h + +2021-02-25 10:22:28 -0500 Josef 'Jeff' Sipek (1e67b93cc9) + + lib-dict: Expose dict and dict transactions to lua scripts + + +M src/lib-dict/Makefile.am +A src/lib-dict/dict-iter-lua.c +A src/lib-dict/dict-lua-private.h +A src/lib-dict/dict-lua.c +A src/lib-dict/dict-lua.h +A src/lib-dict/dict-txn-lua.c +M src/lib-lua/Makefile.am + +2021-02-25 15:35:26 -0500 Josef 'Jeff' Sipek (77cb890b16) + + lib-lua: Implement lua_seti() fallback for pre-5.3 support + + +M m4/want_lua.m4 +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-compat.h + +2021-02-25 10:22:24 -0500 Josef 'Jeff' Sipek (21a2bddaeb) + + lib-lua: Add DLUA_WRAP_C_DATA macro to more easily expose C structures to + lua + + +M src/lib-lua/Makefile.am +A src/lib-lua/dlua-wrapper.h + +2021-02-24 13:57:10 -0500 Josef 'Jeff' Sipek (1dab5661cf) + + lib-lua: Add dlua_pcall_yieldable + + +M configure.ac +M m4/want_lua.m4 +M src/lib-lua/Makefile.am +A src/lib-lua/dlua-resume.c +M src/lib-lua/dlua-script-private.h + +2021-02-25 15:49:18 -0500 Josef 'Jeff' Sipek (2c4ebe2cc7) + + m4: want_lua - Check for lua_{resume,yieldk} + + +M m4/want_lua.m4 + +2021-02-24 14:53:59 -0500 Josef 'Jeff' Sipek (c5478e9d2b) + + lib-lua: Add thread local storage API + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-thread.c +M src/lib-lua/test-lua.c + +2021-02-05 16:47:53 +0200 Aki Tuomi (a84bfdaf6d) + + lib-lua: Add new thread/close thread dlua wrappers + + Code rewritten to use lua registry, warn about unclosed threads, and moved + to a separate file by Josef 'Jeff' Sipek + +M src/lib-lua/Makefile.am +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c +A src/lib-lua/dlua-thread.c + +2021-03-12 02:58:37 +0200 Timo Sirainen (b2948c33c6) + + global: Avoid casting away const + + +M src/auth/test-mech.c +M src/doveadm/doveadm-dump-log.c +M src/doveadm/dsync/dsync-ibc-pipe.c +M src/imap-hibernate/imap-hibernate-client.c +M src/imap/imap-master-client.c +M src/lib-http/http-response-parser.c +M src/lib-http/test-http-client.c +M src/lib-ldap/ldap-search.c +M src/lib-mail/test-message-address.c +M src/lib-smtp/smtp-parser.c +M src/lib-test/test-ostream.c +M src/lib/test-array.c +M src/lib/uri-util.c + +2021-03-12 14:53:38 +0200 Timo Sirainen (8c153a6417) + + lib: iostreams - Use container_of() + + +M src/lib/iostream-temp.c +M src/lib/istream-base64-decoder.c +M src/lib/istream-base64-encoder.c +M src/lib/istream-callback.c +M src/lib/istream-chain.c +M src/lib/istream-concat.c +M src/lib/istream-crlf.c +M src/lib/istream-failure-at.c +M src/lib/istream-file.c +M src/lib/istream-hash.c +M src/lib/istream-jsonstr.c +M src/lib/istream-limit.c +M src/lib/istream-multiplex.c +M src/lib/istream-rawlog.c +M src/lib/istream-seekable.c +M src/lib/istream-sized.c +M src/lib/istream-tee.c +M src/lib/istream-timeout.c +M src/lib/istream-try.c +M src/lib/istream-unix.c +M src/lib/istream.c +M src/lib/ostream-buffer.c +M src/lib/ostream-failure-at.c +M src/lib/ostream-file.c +M src/lib/ostream-hash.c +M src/lib/ostream-multiplex.c +M src/lib/ostream-rawlog.c +M src/lib/ostream-unix.c +M src/lib/ostream-wrapper.c +M src/lib/ostream.c + +2021-03-12 02:56:20 +0200 Timo Sirainen (2ca94e7ac9) + + lib: stats_dist_get_median(), stats_dist_get_percentile() - Remove const + parameter + + They weren't really const, because they required modifying the stats to sort + them. + +M src/lib/stats-dist.c +M src/lib/stats-dist.h +M src/lib/test-stats-dist.c + +2021-02-27 00:04:54 +0100 Stephan Bosch (52d11b4eaf) + + login-common: sasl-server - Remove data transfered to post-login service + from input stream. + + This prevents duplicating input when SSL is involved, causing commands + pipelined after authenticate commands from being duplicated. This issue + emerged when login proxy was changed to use the iostream pump/proxy. This + means that the proxy uses streams rather than raw FDs, which means that data + buffered in input stream before proxy is inherently forwarded to the + post-login service... a second time. + +M src/login-common/sasl-server.c + +2021-03-18 11:17:07 +0100 Timo Sirainen (cf768ecaf4) + + lib: test-cpu-limit - Test upper CPU limit only for user CPU, not for system + CPU + + The system CPU check kept randomly failing with larger and larger limits, so + there doesn't seem to be any point trying to test it at all. + +M src/lib/test-cpu-limit.c + +2021-03-12 02:26:32 +0200 Timo Sirainen (c6ad2aea84) + + lib-index: Fix crash when cache record size is larger than file size + + This shouldn't happen unless the dovecot.index.cache file was corrupted. + +M src/lib-index/mail-cache.c +M src/lib-index/test-mail-cache.c + +2020-08-08 12:11:54 +0300 Timo Sirainen (219c619d8f) + + lib-index: mail_cache_map() - Fix handling huge size values correctly + + offset+size could have wrapped in 32bit systems. + +M src/lib-index/mail-cache.c + +2021-03-15 12:53:19 +0200 Timo Sirainen (718e9c9fb1) + + auth: test-auth-cache - Fix auth_request_var_expand_static_tab[] + + Its size is explicitly set in .h file, so it should be in .c file as well. + +M src/auth/test-auth-cache.c + +2021-03-15 12:02:32 +0000 Siavash Tavakoli (f29449c5c4) + + auth: userdb-passwd: Close the password database in iteration deinit + + Otherwise, next "getpwent()" will continue to return next entries in passwd + database which results in unwanted skipping of entries. + +M src/auth/userdb-passwd.c + +2021-03-09 21:35:15 +0200 Timo Sirainen (3382a7c0f4) + + doveconf: Don't print an error if $rundir/dovecot.conf symlink doesn't exist + + +M src/config/doveconf.c + +2020-04-15 17:57:43 +0300 Timo Sirainen (37089190bc) + + lib-storage: Set mail_index_* and mail_cache_* settings hidden + + It's not recommended to change these settings outside testing. + +M src/lib-storage/mail-storage-settings.c + +2021-03-09 19:10:01 +0200 Timo Sirainen (df7fec2087) + + doveconf: Add -s parameter to show also hidden settings + + +M src/config/doveconf.c + +2020-04-15 17:50:42 +0300 Timo Sirainen (e4c710dd0a) + + doveconf: Don't show hidden settings unless they've been explicitly set + + +M src/config/config-request.c +M src/config/config-request.h +M src/config/doveconf.c + +2020-04-15 17:44:56 +0300 Timo Sirainen (a1339fbfe9) + + lib-settings: Add SET_FLAG_HIDDEN setting flag + + +M src/lib-settings/settings-parser.h + +2020-04-15 17:35:14 +0300 Timo Sirainen (0ce3e66e7b) + + global: Initialize struct setting_define fields with explicit names + + This allows changing the struct contents without breaking compiling. + +M src/auth/auth-settings.c +M src/dict/dict-settings.c +M src/doveadm/doveadm-settings.c +M src/imap/imap-settings.c +M src/lib-lda/lda-settings.c +M src/lib-settings/test-settings-parser.c +M src/lib-smtp/smtp-submit-settings.c +M src/lib-storage/mail-storage-settings.c +M src/master/master-settings.c +M src/plugins/mail-crypt/fs-crypt-settings.c +M src/pop3/pop3-settings.c +M src/stats/stats-settings.c + +2020-04-15 17:21:03 +0300 Timo Sirainen (44a37d2390) + + global: Use SETTING_DEFINE_STRUCT_*() macros when defining settings + + This adds type checking to them. + +M src/auth/auth-settings.c +M src/dict/dict-settings.c +M src/director/director-settings.c +M src/doveadm/doveadm-settings.c +M src/imap-login/imap-login-settings.c +M src/imap-urlauth/imap-urlauth-settings.c +M src/imap-urlauth/imap-urlauth-worker-settings.c +M src/imap/imap-settings.c +M src/lib-lda/lda-settings.c +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/test-master-service-settings-cache.c +M src/lib-smtp/smtp-submit-settings.c +M src/lib-storage/index/dbox-multi/mdbox-settings.c +M src/lib-storage/index/imapc/imapc-settings.c +M src/lib-storage/index/maildir/maildir-settings.c +M src/lib-storage/index/mbox/mbox-settings.c +M src/lib-storage/index/pop3c/pop3c-settings.c +M src/lib-storage/mail-storage-settings.c +M src/lmtp/lmtp-settings.c +M src/login-common/login-settings.c +M src/master/master-settings.c +M src/old-stats/stats-settings.c +M src/plugins/quota/quota-status-settings.c +M src/pop3/pop3-settings.c +M src/replication/aggregator/aggregator-settings.c +M src/replication/replicator/replicator-settings.c +M src/stats/stats-settings.c +M src/submission-login/submission-login-settings.c +M src/submission/submission-settings.c + +2020-04-15 17:20:20 +0300 Timo Sirainen (8d5c63c0e5) + + quota-status: Fix quota_status_settings.recipient_delimiter to be const + + +M src/plugins/quota/quota-status-settings.h + +2020-04-15 17:18:42 +0300 Timo Sirainen (f54fff4552) + + mail-crypt, master: Remove unused DEF & DEFLIST macros + + +M src/master/master-settings.c +M src/plugins/mail-crypt/fs-crypt-settings.c + +2020-04-15 16:53:26 +0300 Timo Sirainen (e6c5b2c0cb) + + lib-settings: Rewrite and add missing SETTING_DEFINE_STRUCT_* macros + + These hadn't been used anywhere. + +M src/config/test-config-parser.c +M src/lib-settings/settings-parser.h +M src/lib-settings/test-settings-parser.c + +2021-03-13 14:23:46 +0200 Timo Sirainen (6986a435e3) + + lib-smtp: fuzz-smtp-server - Fix compiling due to lib-smtp API change + + Forgotten from 2cdab962670df394c28fb7858cb0d4f90f70f71c + +M src/lib-smtp/fuzz-smtp-server.c + +2021-03-16 17:09:11 +0200 Timo Sirainen (e0d7153999) + + submission: Remove dead assignment + + +M src/submission/submission-client.c + +2020-01-15 20:22:00 +0200 Timo Sirainen (b099d5eac6) + + login-common: Fix client_destroy_oldest() return value to be more exact + + Only return TRUE if a client connection is immediately destroyed. + +M src/login-common/client-common.c + +2020-01-15 18:09:14 +0200 Timo Sirainen (56328e4da4) + + lib-master: Add a delay to calling avail_overflow_callback with + client_limit=1 + + Without the delay all (or many/most) processes will call the callback, + because the OS notifies all of the processes of the incoming connection. + This results in all of the connections being killed instead of only a few of + them. + +M src/lib-master/master-service-private.h +M src/lib-master/master-service.c + +2020-01-15 19:10:43 +0200 Timo Sirainen (3b43c181d8) + + lib-master: Change master_service_set_avail_overflow_callback() API + + Needed by the following changes. + +M src/lib-master/master-service-private.h +M src/lib-master/master-service.c +M src/lib-master/master-service.h +M src/login-common/client-common.c +M src/login-common/client-common.h + +2020-01-15 19:06:32 +0200 Timo Sirainen (10746c5b85) + + login-common: Change struct client.created to timeval + + +M src/login-common/client-common-auth.c +M src/login-common/client-common.c +M src/login-common/client-common.h + +2020-01-15 17:49:52 +0200 Timo Sirainen (d905a4e96d) + + lib-master: Code cleanup to refreshing login state + + Unexpected seek offsets are now handled better. + +M src/lib-master/master-service.c + +2020-01-15 16:30:34 +0200 Timo Sirainen (c39854c1fb) + + lib-master: Fix calling avail_overflow_callback with service_count=1 + + This is used by login processes to kill the oldest connection when all of + the clients and processes for the service are taken. This wasn't working + when service_count=1 because the listeners were closed already. + + It's not really useful anymore to even do this kind of a listener closing. + It was originally added in 9217d2426b4f8ece47441357f35d8bb34d97c4eb to + prevent restart problems with long-running login processes. However, + nowadays listeners can be closed via SIGQUIT so this isn't necessary. + +M src/lib-master/master-service.c + +2021-02-26 12:28:03 +0000 Siavash Tavakoli (5dd81d83d8) + + lib-storage: Correct escaping for list index lookups + + - Escape storage name when listing mailbox from index and unescape mailbox + name when looking for sibling nodes. + - Unescape when adding node to list index. + - List index iteration is performed with storage name where separators must + be escaped with storage_name_escape_char. Index lookup is done with + storage_name which is escaped with storage_name_escape_char but node names + are unescaped. + +M src/lib-storage/list/mailbox-list-index-iter.c +M src/lib-storage/list/mailbox-list-index-sync.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/list/mailbox-list-index.h + +2021-02-22 15:37:19 +0000 Siavash Tavakoli (1feae5169f) + + lib-storage: Expose mailbox_list_name_{escape,unescape} functions in header + + To be used in mailbox-list-index. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-list.h + +2021-03-11 17:55:08 +0000 Siavash Tavakoli (b603f3284e) + + lib-storage: test-mail-storage: Separate test cases for "LAYOUT=INDEX" + + With default escaping for "INDEX" layout, more mailbox name are accepted. + +M src/lib-storage/test-mail-storage.c + +2021-02-22 15:29:30 +0000 Siavash Tavakoli (d4e4892461) + + lib-storage: mailbox-list: Add default storage name escaping for index + layout + + Add a default value for "storage_name_escape_char" when "LAYOUT=index". + Needed for situations where mailbox name contains separator char (e.g. after + migration to new separator) and listescape plugin is not active. + +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/mailbox-list.c + +2021-02-26 16:03:50 +0000 Siavash Tavakoli (2f2e20739a) + + lib-storage: Rename mailbox_list_index_node.name to raw_name + + To make it clear that the string is unescaped raw value, rename from generic + "name" to "raw_name". + +M src/lib-storage/list/mailbox-list-index-iter.c +M src/lib-storage/list/mailbox-list-index-sync.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/list/mailbox-list-index.h +M src/lib-storage/list/mailbox-list-notify-tree.c + +2021-03-11 12:31:52 +0000 Siavash Tavakoli (42ae314198) + + lib-storage: Add mailbox list index alt separator + + To avoid collision with storage name escape character, use an alternative + char ('^') if hierarchy separator for list index is the same char. + +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/list/mailbox-list-index.h + +2021-03-16 14:37:54 +0200 Timo Sirainen (e1dd685f1a) + + login-common: Finish freeing the client when anvil lookup is pending at + destroy + + Broken by f32daf5ac9eaa886e28659965fc0156b52b60bda + +M src/login-common/client-common.c +M src/login-common/sasl-server.c + +2021-03-16 14:37:38 +0200 Timo Sirainen (be3cd60a1b) + + login-common: Assert-crash at deinit if there are still referenced clients + + +M src/login-common/client-common.c + +2021-03-16 14:36:35 +0200 Timo Sirainen (1c622cdbe0) + + login-common: Track referenced but destroyed clients in a linked list + + This helps debugging. + +M src/login-common/client-common.c + +2021-03-11 13:00:56 +0200 Timo Sirainen (0e0519cd25) + + lib: test-cpu-limit - Increase ALLOW_MSECS_ABOVE further + + 1500 was still not enough to prevent random failures. + +M src/lib/test-cpu-limit.c + +2021-03-15 18:18:07 +0200 Timo Sirainen (2133e37cfc) + + lib: cpu-limit - Redesign the API + + The new API no longer has a signal callback, just a cpu_limit_exceeded() + function that needs to be periodically called to check if the limit has + exceeded. The callback could be added back if really necessary, but it's + just too easy to use signal handlers unsafely. + + The new API also supports separating limits for user and system CPU usage. + It also attempts to guard against any unexpected kernel behavior resulting + from unclear behavior on how exactly the getrlimit(), setrlimit() and XCPU + signals interact. + +M src/lib/cpu-limit.c +M src/lib/cpu-limit.h +M src/lib/test-cpu-limit.c + +2021-03-15 17:22:00 +0200 Timo Sirainen (db70cd7091) + + lib: cpu-limit - Split off cpu_limit_get_usage_msecs_with() + + +M src/lib/cpu-limit.c + +2021-03-15 17:21:03 +0200 Timo Sirainen (e83d620cb6) + + lib: cpu-limit - Move cpu_limit_get_usage_msecs() + + +M src/lib/cpu-limit.c + +2021-03-15 16:50:25 +0200 Timo Sirainen (66fb224ce9) + + lib: cpu-limit - Update comments related to nesting + + +M src/lib/cpu-limit.h + +2021-03-15 15:42:56 +0200 Timo Sirainen (337e29dee5) + + lib: cpu_limit_get_usage_[m]secs() - Add type parameter + + It can now return user CPU, system CPU or both usages. + +M src/lib/cpu-limit.c +M src/lib/cpu-limit.h + +2021-03-15 15:37:55 +0200 Timo Sirainen (fde5380485) + + lib: cpu-time - Use the original struct rusage as the initial_usage + + This will allow separation of user and system CPU usage tracking. They could + have been tracked with two separate struct timevals, but the extra memory + usage is small and it might be nice to have all the available data for + debugging. + +M src/lib/cpu-limit.c + +2021-03-15 18:00:55 +0200 Timo Sirainen (387bbf0bae) + + lib: test-cpu-limit - Fix nested limit asserts + + +M src/lib/test-cpu-limit.c + +2021-03-10 17:56:12 +0200 Timo Sirainen (586cca5769) + + lib-imap: Handle empty lists in IMAP BODYSTRUCTURE parsing as invalid + + They should be NIL instead of () if they're empty. + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2021-03-10 17:40:47 +0200 Timo Sirainen (dd51ae09a8) + + lib-imap: Fix assert-crash if parsing invalid BODYSTRUCTURE with empty + Content-Language list + + If there's no Content-Language, it should be NIL in the bodystructure. So if + the value is (), it is invalid. + + This could in theory have happened when parsing corrupted + dovecot.index.cache or receiving it from a broken remote IMAP server with + imapc. The bug was found by fuzzing though. + + Fixes: Panic: file imap-bodystructure.c: line 98 + (part_write_bodystructure_common): assertion failed: (*lang != NULL) + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2021-03-10 17:39:48 +0200 Timo Sirainen (2e5ef7cd2c) + + lib-imap: test-imap-bodystructure - imap_bodystructure_parse() - Test + returned error + + +M src/lib-imap/test-imap-bodystructure.c + +2021-03-11 13:13:24 -0500 Josef 'Jeff' Sipek (6960b0130c) + + lib-lua: Error out the build if using Lua 5.2 + + +M src/lib-lua/dlua-compat.c + +2021-03-11 13:13:03 -0500 Josef 'Jeff' Sipek (508a7f7566) + + Global: Remove support for Lua 5.2 + + It took far too much effort to keep compatible with it. Since every distro + out there provides either Lua 5.1 or 5.3, it makes sense to give up on 5.2. + +M m4/want_lua.m4 +M src/lib-lua/test-lua.c + +2021-03-09 10:53:50 -0500 Josef 'Jeff' Sipek (62a94d2270) + + m4: Allow explict override of lua version + + It is possible that the system has several different versions of Lua + installed. This change allows one to force a specific version of Lua during + ./configure. For example: + + LUA_CFLAGS="`pkg-config lua51 --cflags`" \ + LUA_LIBS="`pkg-config lua51 --libs`" \ + ./configure \ + --with-lua + +M m4/want_lua.m4 + +2021-03-09 18:40:32 +0200 Timo Sirainen (37fa8a945b) + + lib-storage: Preserve last-rename-stamp when rebuilding index + + +M src/lib-storage/index/index-rebuild.c + +2021-03-09 18:42:38 +0200 Timo Sirainen (4484e357fe) + + lib-storage: Don't trust last-rename-stamp that is too far into the future + + If the timestamp is in the future, autoexpunging stops working until the + future time is passed. If this happened due to corruption, it could take a + long time before the timestamp is reached. + +M src/lib-storage/mail-autoexpunge.c + +2021-03-09 18:37:51 +0200 Timo Sirainen (e773308cb1) + + lib-storage: Preserve hdr-pop3-uidl when rebuilding index + + This prevents potentially expensive metadata lookups afterwards when trying + to find out which mails have the POP3 UIDLs in their metadata. + +M src/lib-storage/index/index-rebuild.c + +2021-03-09 18:36:35 +0200 Timo Sirainen (54eb5a9661) + + lib-storage: Convert index_rebuild_box_name_header() into generic + index_rebuild_box_preserve_header() + + +M src/lib-storage/index/index-rebuild.c + +2020-05-11 17:41:24 +0300 Timo Sirainen (2c9d83a640) + + doveadm dump: Support hdr-pop3-uidl index header extension + + +M src/doveadm/doveadm-dump-index.c + +2020-05-11 17:40:29 +0300 Timo Sirainen (f879618dd8) + + doveadm dump: Include mail-storage-private.h to get easier access to some + structs + + Avoids having to duplicate the structs. + +M src/doveadm/doveadm-dump-index.c + +2021-03-10 22:08:24 +0200 Timo Sirainen (b0f498b692) + + auth: userdb_parse_[ug]id() - Fix error logging to use events properly + + If request is missing, use the global auth_event instead of hiding the + error. + +M src/auth/userdb.c + +2019-10-31 16:39:26 +0200 Timo Sirainen (fdc10a6c9c) + + auth: Use auth_request.event for logging whenever possible + + +M src/auth/auth-cache.c +M src/auth/auth-penalty.c +M src/auth/auth-request.c +M src/auth/db-checkpassword.c +M src/auth/mech-winbind.c +M src/auth/userdb-blocking.c +M src/auth/userdb-ldap.c +M src/auth/userdb-passwd.c +M src/auth/userdb.c + +2019-10-31 16:31:55 +0200 Timo Sirainen (66ddc39ad7) + + auth: auth-client-connection: Log all errors via events + + +M src/auth/auth-client-connection.c + +2019-10-31 16:29:22 +0200 Timo Sirainen (19a40f34d7) + + auth: auth-worker-server: Log errors via events + + +M src/auth/auth-worker-server.c + +2019-10-31 16:21:15 +0200 Timo Sirainen (0e06d67755) + + auth: auth-request-handler: Log errors via events + + +M src/auth/auth-request-handler.c + +2019-10-31 16:18:15 +0200 Timo Sirainen (5cd4850716) + + auth: authdb_event() - Use const pointer + + +M src/auth/auth-request.h + +2019-10-31 16:14:09 +0200 Timo Sirainen (6e004bf327) + + auth: Replace auth_master_log_error() with e_error() + + +M src/auth/auth-master-connection.c +M src/auth/auth-master-connection.h +M src/auth/auth-request-handler.c + +2019-10-31 16:21:35 +0200 Timo Sirainen (fc151df907) + + auth: auth-worker-client: Log errors via events + + +M src/auth/auth-worker-client.c + +2019-10-31 15:36:02 +0200 Timo Sirainen (82918227d8) + + auth: auth-worker-client: Fix setting process title to [idling] + + The existing code was completely wrong. It was set only when LIST command + started running. For other commands it wasn't set at all. + +M src/auth/auth-worker-client.c + +2019-10-31 15:34:06 +0200 Timo Sirainen (543ef9a5cc) + + auth: auth-worker-client: Move common code to auth_worker_request_finished() + + +M src/auth/auth-worker-client.c + +2019-10-31 15:31:57 +0200 Timo Sirainen (09de553954) + + auth: auth-worker-client: Move auth_worker_request_finished*() + + +M src/auth/auth-worker-client.c + +2019-10-31 15:27:49 +0200 Timo Sirainen (8077977b38) + + auth: auth-worker-client: Set "error" for all auth worker request failures + + Previously the error was set only for protocol errors. Now it's set for + everything, including password mismatches. However, only the protocol errors + are logged with error level, others are debug level. + +M src/auth/auth-worker-client.c + +2019-10-31 15:23:01 +0200 Timo Sirainen (9e5c44af66) + + auth: auth-worker-client: Rename auth_worker_log_finished() to + auth_worker_request_finished() + + +M src/auth/auth-worker-client.c + +2019-10-31 14:48:11 +0200 Timo Sirainen (0fbd856f28) + + auth: userdb iteration - Use event based logging + + +M src/auth/userdb-dict.c +M src/auth/userdb-passwd-file.c +M src/auth/userdb-passwd.c +M src/auth/userdb-sql.c + +2019-10-31 14:41:56 +0200 Timo Sirainen (88d2e192fd) + + auth: db-passwd-file - Use event based logging + + +M src/auth/db-passwd-file.c +M src/auth/db-passwd-file.h + +2019-10-31 14:34:48 +0200 Timo Sirainen (76c5f00362) + + auth: db-ldap - Use event based logging + + +M src/auth/db-ldap.c +M src/auth/db-ldap.h + +2021-02-25 21:58:17 +0200 Timo Sirainen (f32daf5ac9) + + login-common: Fix assert-crash if client is destroyed during anvil lookup + + This could happen if the client gets disconnected due to + "Connection queue full". + + Fixes: Panic: file client-common.c: line 323 (client_destroy): assertion + failed: (!client->authenticating) + +M src/login-common/client-common.c +M src/login-common/client-common.h +M src/login-common/sasl-server.c + +2021-03-10 13:50:00 +0200 Timo Sirainen (3a6ec2997a) + + lib: event_logv() - Make sure errno is preserved + + It already should have been, but this change makes it clearer and more + future-safe. + +M src/lib/event-log.c +M src/lib/test-event-log.c + +2021-03-02 19:30:23 +0200 Timo Sirainen (e980325475) + + imap: Use internal error for logging FETCH failed disconnection message + + +M src/imap/cmd-fetch.c + +2021-03-02 18:58:54 +0200 Timo Sirainen (69069554be) + + submission-login: Fix logging "no auth attempts" at disconnection + + client.banner_sent wasn't set, which prevented this from being logged. + +M src/submission-login/client.c + +2021-03-02 17:51:54 +0200 Timo Sirainen (1f926dd5d0) + + lib-smtp: smtp_server_connection_ssl_init() - Don't start SSL handshake + + If SSL handshaking fails, it shouldn't be logged as an error similarly to + actual SSL initialization errors. + +M src/lib-smtp/smtp-server-connection.c + +2021-03-02 17:44:37 +0200 Timo Sirainen (eee5cd271a) + + lib-smtp: Remove smtp_server_connection.disconnect_reason + + This isn't used anywhere and its purpose is a bit unclear. + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-private.h + +2021-03-02 17:33:30 +0200 Timo Sirainen (7a91266647) + + imap-urlauth: Change event_category_urlauth to be static + + +M src/imap-urlauth/imap-urlauth-client.c + +2021-03-02 17:30:52 +0200 Timo Sirainen (de3d7f4d0e) + + imap-urlauth: Replace i_info() and i_error() calls with e_info() and + e_error() + + +M src/imap-urlauth/imap-urlauth-client.c +M src/imap-urlauth/imap-urlauth-login.c + +2021-03-02 17:26:50 +0200 Timo Sirainen (e069e121fa) + + imap-urlauth: Don't change log prefix just before disconnection line + + It shouldn't be necessary. (And if it was, it should be done in init.) + +M src/imap-urlauth/imap-urlauth-client.c + +2021-03-02 17:25:31 +0200 Timo Sirainen (33d03c7aa8) + + imap-urlauth: client_destroy() - Allow NULL reason only if client is + disconnected + + +M src/imap-urlauth/imap-urlauth-client.c + +2021-03-02 17:24:14 +0200 Timo Sirainen (9354759519) + + imap-urlauth: Remove duplicate "Disconnected: " prefix + + It's already logged by client_destroy() + +M src/imap-urlauth/imap-urlauth-login.c + +2021-03-02 17:19:13 +0200 Timo Sirainen (e0116a1bec) + + imap-urlauth: Add Username to log prefix + + +M src/imap-urlauth/imap-urlauth-client.c + +2021-03-02 17:15:45 +0200 Timo Sirainen (34543d8893) + + imap-urlauth: Fix event leak if worker can't be connected to + + +M src/imap-urlauth/imap-urlauth-client.c + +2021-03-02 15:15:09 +0200 Timo Sirainen (5e34090a35) + + lib-smtp: Standardize iostream error handling + + Use [io]_stream_get_disconnect_reason() for logging all errors. None of the + iostream errors are logged as error level anymore. This way for example TLS + connection problems caused by broken clients aren't logged as errors. + +M src/lib-smtp/smtp-command-parser.c +M src/lib-smtp/smtp-server-cmd-auth.c +M src/lib-smtp/smtp-server-cmd-data.c +M src/lib-smtp/smtp-server-connection.c + +2021-03-02 15:07:56 +0200 Timo Sirainen (a0a04a86fc) + + lib: Add o_stream_get_disconnect_reason() + + +M src/lib/ostream.c +M src/lib/ostream.h + +2021-03-02 15:06:50 +0200 Timo Sirainen (170505ce06) + + lib: Clarify i[o]_stream_get_disconnect_reason() comment + + +M src/lib/iostream.h +M src/lib/istream.h + +2021-03-02 14:51:48 +0200 Timo Sirainen (6ece37a1ca) + + lib-smtp: Remove EIO-specific error handling + + No such error should be seen by lib-smtp. + +M src/lib-smtp/smtp-command-parser.c + +2021-03-02 13:15:56 +0200 Timo Sirainen (206d350e75) + + submission: Standardize "Disconnected:" log line + + Remote IP is no longer logged. If it's wanted, it can be added to + mail_log_prefix just like with other protocols. + +M src/submission/submission-client.c + +2021-03-02 13:13:52 +0200 Timo Sirainen (6d5e9dc47c) + + lib-smtp: Standardize QUIT logging + + Similar to POP3, use "Logged out" or "Aborted login by logging out". + +M src/lib-smtp/smtp-server-command.c + +2021-03-01 16:47:54 +0200 Timo Sirainen (5fb3a030d7) + + pop3: Improve "inactivity" disconnection reason log messages + + +M src/pop3/pop3-client.c + +2021-03-01 16:46:16 +0200 Timo Sirainen (a5a8dad1f2) + + pop3: Add "Disconnected: " prefix to all disconnection log lines + + +M src/pop3/pop3-client.c + +2021-02-03 22:15:51 +0200 Timo Sirainen (7bce44b6af) + + login-common: Add and use client_destroy_iostream_error() + + This standardizes the disconnection log message. + +M src/login-common/client-common-auth.c +M src/login-common/client-common.c +M src/login-common/client-common.h + +2021-02-03 21:59:55 +0200 Timo Sirainen (de71b89e54) + + *-login: Replace "Aborted login" with "Disconnected: Aborted login by + logging out" + + +M src/imap-login/imap-login-client.c +M src/login-common/client-common.h +M src/pop3-login/client.c + +2021-02-03 21:58:15 +0200 Timo Sirainen (04440c6364) + + *-login: Add "Disconnected: " prefix to most disconnection log lines + + All except "Disconnected by proxy" disconnections. + +M src/imap-login/imap-login-client.c +M src/login-common/client-common.c +M src/login-common/client-common.h +M src/login-common/login-proxy.c +M src/login-common/main.c +M src/submission-login/client.c + +2021-02-03 21:18:41 +0200 Timo Sirainen (e72f10af89) + + imap-hibernate: Add "Disconnected: " prefix to all disconnection log lines + + +M src/imap-hibernate/imap-client.c + +2021-03-01 16:40:57 +0200 Timo Sirainen (28ac5a03c9) + + imap: Improve "inactivity" disconnection reason log messages + + +M src/imap/imap-client.c + +2021-02-03 21:13:13 +0200 Timo Sirainen (e81273bac4) + + imap: Improve client disconnection log line in APPEND + + +M src/imap/cmd-append.c + +2021-02-03 17:47:13 +0200 Timo Sirainen (7ca5d9e76d) + + imap: Add "Disconnected: " prefix to all disconnection log lines + + It's currently not very clear that all these different log lines are about + the disconnection event. + +M src/imap/imap-client.c + +2021-03-02 16:40:48 +0200 Timo Sirainen (e898f7bba9) + + lmtp: Simplify client_destroy() handling + + This is similar to the earlier submission commit. + +M src/lmtp/lmtp-client.c +M src/lmtp/lmtp-client.h + +2021-03-02 16:37:30 +0200 Timo Sirainen (578708f67d) + + lmtp: Simplify/clarify disconnection code flow + + This is similar to the earlier submission commit. + +M src/lmtp/lmtp-client.c +M src/lmtp/lmtp-client.h + +2021-03-02 16:09:38 +0200 Timo Sirainen (0244a63021) + + submission: Remove client.stats + + client.conn is no longer ever NULL, so this isn't needed. + +M src/submission/submission-client.c +M src/submission/submission-client.h + +2021-03-02 16:00:24 +0200 Timo Sirainen (d013b6fd8b) + + submission: Simplify client_destroy() handling + + Now it simply calls smtp_server_connection_terminate() and the conn_free() + callback does the actual destroying. + +M src/submission/submission-backend.c +M src/submission/submission-client.c +M src/submission/submission-client.h + +2021-03-02 15:46:11 +0200 Timo Sirainen (8d8676f61b) + + submission: Simplify/clarify disconnection code flow + + client_disconnect() is now removed. Instead, client_destroy() now calls + smtp_server_connection_terminate() directly to cause a disconnection and + smtp_server_callbacks.conn_disconnect() handles the disconnection directly. + This same behavior happened earlier also, but it wasn't as clear. + +M src/submission/submission-client.c +M src/submission/submission-client.h + +2021-03-02 15:41:15 +0200 Timo Sirainen (453fd9e00e) + + submission: Move client_connection_disconnect|free() + + +M src/submission/submission-client.c + +2021-03-05 17:03:11 +0200 Timo Sirainen (c05c419c69) + + lib-smtp, lmtp, submission: Move adding "(state=%s)" in disconnection reason + to lib-smtp + + The following changes will break this in submission and lmtp. The state will + be reset before conn_disconnect() is called, so they would always log + state=READY. + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server.c +M src/lib-smtp/smtp-server.h +M src/lmtp/lmtp-client.c +M src/submission-login/client.c +M src/submission/submission-client.c + +2021-03-02 14:17:29 +0200 Timo Sirainen (691d92feb9) + + lib-smtp: Add "unfinished %s command" if client disconnected during command + processing + + This also removes the need for special code path to differentiate between + logging "Remote closed connection" and "Remote closed connection + unexpectedly". + +M src/lib-smtp/smtp-server-connection.c + +2021-03-02 15:23:46 +0200 Timo Sirainen (2cdab96267) + + lib-smtp: Rename conn_destroy() callback to conn_free() + + It's called when the final reference to connection is dropped, so this + describes it better. + +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server.h +M src/lib-smtp/test-smtp-payload.c +M src/lib-smtp/test-smtp-server-errors.c +M src/lmtp/lmtp-client.c +M src/submission-login/client.c +M src/submission/submission-client.c + +2021-03-02 10:57:08 +0000 Siavash Tavakoli (ae50fc29a4) + + indexer: Convert indexer-worker log info to event + + Emit an event named "indexer_worker_indexing_finished", with following extra + fields: + - message_count: Number of messages indexed + - first_uid: First uid of the message indexed + - last_uid: Last uid of the message indexed + - user_cpu_usecs: Total user mode cpu time spent on indexing + + On successful indexing and on MAIL_ERROR_NOTFOUND error event is emitted + with "e_debug()", in other error situations event is emitted with + "e_error()". + +M src/indexer/master-connection.c + +2021-03-04 23:26:52 +0000 Siavash Tavakoli (6b32c8b25a) + + lib: lib-event: Add event_enable_user_cpu_usecs + + - Add an internal rusage struct to events to keep track of resource usage. + - "event_enable_user_cpu_usecs()" enables "user_cpu_usecs" field for the + event + + If "user_cpu_usecs" field is enabled, user CPU time will be calculated at + the time of sending the event and will be added to event fields. + +M src/lib/lib-event-private.h +M src/lib/lib-event.c +M src/lib/lib-event.h + +2021-03-11 09:28:58 +0200 Aki Tuomi (b99dea5b81) + + m4: want_lua - Fix Lua function checks + + One has to use $LIBS variable to ensure libraries come after conftest.c in + configure. + + Broken in af819cd2f43b8896d949a33f8099234ac57df6e5 + +M m4/want_lua.m4 + +2021-03-03 17:08:07 -0500 Josef 'Jeff' Sipek (61789ad382) + + lib-lua: Add table get helpers + + +M src/lib-lua/Makefile.am +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-script-private.h +A src/lib-lua/dlua-table.c +M src/lib-lua/test-lua.c + +2021-03-04 17:05:45 -0500 Josef 'Jeff' Sipek (ea26d657e0) + + lib-lua: Check for function presence instead of Lua version in compat code + + +M m4/want_lua.m4 +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-compat.h + +2021-03-04 17:03:03 -0500 Josef 'Jeff' Sipek (991e3c8cec) + + lib-lua: Reorder compat luaL_{setfuncs,setmetatable} + + Switch their order to keep them alphabetical. This will make the header + changes in the next commit a little more consistent. + + Additionally, fix up the coding style. + +M src/lib-lua/dlua-compat.c + +2021-03-04 16:51:46 -0500 Josef 'Jeff' Sipek (2354db8607) + + lib-lua: Move compat macros and prototypes to dlua-compat.h + + Additionally, fix -Wstrict-bool issue in luaL_newmetatable() compatibility + wrapper. + +M src/lib-lua/dlua-compat.h +M src/lib-lua/dlua-script-private.h + +2021-03-04 16:38:50 -0500 Josef 'Jeff' Sipek (1bcc5f4a73) + + lib-lua: Remove unused compatibility macros + + These are never used since all supported Lua versions define + LUA_VERSION_NUM. + +M src/lib-lua/dlua-script-private.h + +2021-03-04 16:21:07 -0500 Josef 'Jeff' Sipek (32e963965c) + + lib-lua: Implement a Lua 5.1 & 5.2 compatibility wrapper for lua_isinteger + + +M src/lib-lua/dlua-compat.c +M src/lib-lua/dlua-compat.h +M src/lib-lua/test-lua.c + +2021-03-04 16:16:53 -0500 Josef 'Jeff' Sipek (af819cd2f4) + + m4: want_lua - Check for lua_isinteger + + +M m4/want_lua.m4 + +2021-03-04 15:35:37 -0500 Josef 'Jeff' Sipek (cdf6260258) + + lib-lua: Implement a Lua 5.1 compatibility wrapper for lua_tointegerx + + +M src/lib-lua/Makefile.am +M src/lib-lua/dlua-compat.c +A src/lib-lua/dlua-compat.h +M src/lib-lua/dlua-script-private.h +M src/lib-lua/test-lua.c + +2021-03-04 15:31:29 -0500 Josef 'Jeff' Sipek (f86a94015f) + + m4: want_lua - Check for lua_tointegerx + + +M m4/want_lua.m4 + +2021-02-12 13:11:53 +0100 Stephan Bosch (cd7e0ae51b) + + lib-smtp: test-smtp-client-errors - Amend early data reply test to verify + that connection is still viable. + + Some problems only surface when the connection is reused for the next + command. Before, the connection was terminated immediately after the + transaction, which hides such issues. + +M src/lib-smtp/test-smtp-client-errors.c + +2021-02-09 23:35:53 +0100 Stephan Bosch (e305a608bf) + + lib-smtp: smtp-client-connection - Hold reference to command that is sending + a stream. + + This fixes a panic: + + Panic: file smtp-client-command.c: line 715 + (smtp_client_command_do_send_more): assertion failed: (cmd->stream != NULL) + +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-connection.c + +2021-02-09 23:35:42 +0100 Stephan Bosch (4d03a50a50) + + lib-smtp: smtp-client-command - Make smtp_client_command_unref() return TRUE + when the object persists. + + +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-command.h + +2021-02-09 23:44:42 +0100 Stephan Bosch (09cd268754) + + lib-smtp: smtp-client-command - Make smtp_client_command_unref(NULL) a + no-op. + + +M src/lib-smtp/smtp-client-command.c + +2021-03-06 17:58:53 +0200 Timo Sirainen (63bebe6103) + + imap: Fix logging garbage if imap-hibernate sends invalid VERSION + + +M src/imap/imap-client-hibernate.c + +2021-03-05 15:26:24 +0200 Timo Sirainen (d386b616c0) + + lib-mail: mail-html2text - Fix character signedness type mismatch + + Fixes ubsan complaints: mail-html2text.c:186:12: runtime error: implicit + conversion from type 'unsigned char' of value 226 (8-bit, unsigned) to type + 'char' changed the value to -30 (8-bit, signed) + +M src/lib-mail/mail-html2text.c + +2021-03-05 12:44:42 +0200 Timo Sirainen (070f586350) + + fts-tika: Don't fail indexing if Tika returns 5xx error + + Broken by 8e1eaf849ce4668c0941338e3e3671db159da575, which changed 5xx to be + retried once before it was ignored. However, it accidentally changed the + second 5xx to return failure instead of being ignored. + +M src/plugins/fts/fts-build-mail.c + +2021-03-02 17:10:03 +0200 Timo Sirainen (52d3c54afd) + + pop3: Change IO context earlier while shutting down + + This didn't practically cause any issues currently, but the new behavior is + more correct and future-proof. + +M src/pop3/pop3-client.c + +2021-03-02 17:08:53 +0200 Timo Sirainen (055a98fa40) + + imap: Fix using mail_log_prefix is used when client disconnects during + server shutdown + + +M src/imap/imap-client.c +M src/imap/main.c + +2021-03-02 17:02:32 +0200 Timo Sirainen (5f948f4079) + + submission: Fix using mail_log_prefix when client is disconnected due to + server shutdown + + +M src/submission/submission-client.c + +2021-02-26 16:10:18 +0200 Timo Sirainen (47097c6d27) + + dict-sql: Add more comments + + +M src/lib-dict-backend/dict-sql.c + +2021-02-26 16:05:47 +0200 Timo Sirainen (27f28a1fde) + + dict-sql: Rename [extra_]values to pattern_values + + +M src/lib-dict-backend/dict-sql.c + +2021-02-26 16:03:35 +0200 Timo Sirainen (98dd0628a7) + + dict-sql: Rename dict_sql_map.max_field_count to max_pattern_fields_count + + +M src/lib-dict-backend/dict-sql-settings.c +M src/lib-dict-backend/dict-sql-settings.h +M src/lib-dict-backend/dict-sql.c + +2021-02-26 16:02:05 +0200 Timo Sirainen (94fbb67e34) + + dict-sql: Rename dict_sql_map.sql_fields to pattern_fields + + +M src/lib-dict-backend/dict-sql-settings.c +M src/lib-dict-backend/dict-sql-settings.h +M src/lib-dict-backend/dict-sql.c + +2021-02-26 15:40:41 +0200 Timo Sirainen (8abff720eb) + + dict-sql: Change char key1 to bool add_username + + +M src/lib-dict-backend/dict-sql.c + +2021-02-26 15:32:48 +0200 Timo Sirainen (00b313513f) + + dict-sql: Simplify sql_dict_maps_are_mergeable() and add comments + + +M src/lib-dict-backend/dict-sql.c + +2021-02-26 15:29:02 +0200 Timo Sirainen (70f6f640cc) + + lib: test-array - Use i_strcmp_p() instead of reimplementing it + + +M src/lib/test-array.c + +2021-02-26 15:02:02 +0200 Timo Sirainen (4810970ea6) + + dict-sql: Simplify set/inc flushing + + Especially the *_real() function names were confusing. + +M src/lib-dict-backend/dict-sql.c + +2021-02-25 17:54:26 +0200 Timo Sirainen (3b46f12e9b) + + dict-sql: Support merging multiple atomic_inc fields + + +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-backend/test-dict-sql.c + +2021-02-25 17:40:22 +0200 Timo Sirainen (f6a4383d65) + + dict-sql: Support merging multiple set fields + + +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-backend/dict.conf +M src/lib-dict-backend/test-dict-sql.c + +2021-02-25 17:19:49 +0200 Timo Sirainen (69a1c091d3) + + dict-sql: Keep trying to merge INSERT/UPDATE always to the previous key + + Previously if the first two couldn't be merged, it would flush both. Now it + flushes only the first and attempts to merge the 2nd and 3rd. + +M src/lib-dict-backend/dict-sql.c + +2021-02-25 17:10:01 +0200 Timo Sirainen (977346e1bf) + + dict-sql: Move prev_set_* and prev_inc_* to struct sql_dict_prev + + +M src/lib-dict-backend/dict-sql.c + +2021-02-25 15:50:45 +0200 Timo Sirainen (4d66f8f75b) + + lib-sql: driver-test - Use test_assert_strcmp() + + +M src/lib-sql/driver-test.c + +2021-02-25 15:49:47 +0200 Timo Sirainen (9a1ee0e316) + + lib-dict-backend: test-dict-sql - Use test_assert_strcmp*() + + +M src/lib-dict-backend/test-dict-sql.c + +2021-02-23 22:49:57 +0200 Timo Sirainen (6c92f46723) + + lib-fs: Add type safety to fs_file/iter_set_async_callback() callback + context + + +M src/lib-fs/fs-api.c +M src/lib-fs/fs-api.h +M src/lib-fs/fs-wrapper.c + +2021-02-23 11:11:47 +0200 Timo Sirainen (2a79971244) + + lib-dict, global: Add type safety to dict_transaction_commit_async() + callback context + + +M src/dict/dict-commands.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/plugins/last-login/last-login-plugin.c +M src/plugins/quota-clone/quota-clone-plugin.c +M src/plugins/quota/quota-dict.c + +2021-02-23 11:16:50 +0200 Timo Sirainen (02c3916fa3) + + lib-dict, quota: Add and use dict_transaction_commit_async_nocallback() + + +M src/lib-dict/dict.c +M src/lib-dict/dict.h +M src/plugins/quota/quota-dict.c + +2021-02-23 11:09:36 +0200 Timo Sirainen (2397fa2a40) + + lib-dict, global: Add type safety to dict_iterate_set_async_callback() + callback context + + +M src/dict/dict-commands.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h + +2021-02-23 11:08:03 +0200 Timo Sirainen (46cc92aa6c) + + lib-dict, global: Add type safety to dict_lookup_async() callback context + + +M src/dict/dict-commands.c +M src/doveadm/doveadm-dict.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict.c +M src/lib-dict/dict.h + +2021-03-02 09:51:59 -0500 Josef 'Jeff' Sipek (1314743ca9) + + configure: Remove useless checks for luajit + + At one point, we considered supporting LuaJIT. While it turned out to be + not worth it, the prototype removal accidentally left checks in the + configure file. + +M configure.ac + +2021-02-22 17:44:03 -0500 Josef 'Jeff' Sipek (16bc5913a0) + + global: dict_iterate_deinit(NULL) is a no-op + + +A coccinelle/null-nop-dict_iterate_deinit.cocci +M src/auth/userdb-dict.c +M src/dict/dict-commands.c + +2021-02-22 17:43:49 -0500 Josef 'Jeff' Sipek (d7446176ef) + + lib-dict: Make dict_iterate_deinit(NULL) a no-op + + +M src/lib-dict/dict.c + +2021-02-22 17:43:05 -0500 Josef 'Jeff' Sipek (dace16f540) + + global: dict_transaction_rollback(NULL) is a no-op + + +A coccinelle/null-nop-dict_transaction_rollback.cocci +M src/dict/dict-connection.c +M src/lib-storage/index/index-transaction.c + +2021-02-22 17:41:23 -0500 Josef 'Jeff' Sipek (955ba101dc) + + lib-dict: Make dict_transaction_rollback(NULL) a no-op + + +M src/lib-dict/dict.c + +2021-02-04 18:25:13 +0200 Timo Sirainen (ac9e117021) + + fts: Replace generic "transaction context" error with more specific ones + + +M src/plugins/fts/fts-storage.c + +2021-02-03 19:42:17 +0200 Timo Sirainen (33cc04ebb7) + + fts: Fix mail_precache() and related error handling + + The mail_precache() caller is now expected to stop on error, so there's no + need for fts to stop the search internally anymore. And similarly the caller + will log the mail_precache() error so the search or transaction don't need + to fail. + + ft->failed is now used only for failures that are more specific to the + transaction. + +M src/plugins/fts/fts-storage.c + +2021-02-03 19:30:35 +0200 Timo Sirainen (2e19383b9f) + + fts: Use storage error logging when possible + + Use mail_storage_set_internal_error() only when it's required, because it + loses the internal error string in storage. + +M src/plugins/fts/fts-build-mail.c +M src/plugins/fts/fts-build-mail.h +M src/plugins/fts/fts-storage.c + +2021-02-03 19:27:08 +0200 Timo Sirainen (dc78357452) + + lib-fts, fts: fts_language_detect() - Return error string instead of logging + it + + +M src/lib-fts/fts-language.c +M src/lib-fts/fts-language.h +M src/lib-fts/test-fts-language.c +M src/plugins/fts/doveadm-fts.c +M src/plugins/fts/fts-build-mail.c + +2021-02-03 21:00:22 +0200 Timo Sirainen (3c37ef3730) + + indexer: Include "attempted to index ... messages" also in all error + messages + + After the following changes search or transaction won't always fail anymore. + +M src/indexer/master-connection.c + +2021-02-04 18:07:45 +0200 Timo Sirainen (3f328ac9f5) + + global: Handle mail_precache() errors + + +M src/doveadm/doveadm-mail-index.c +M src/indexer/master-connection.c +M src/plugins/fts/fts-storage.c + +2021-02-04 18:05:39 +0200 Timo Sirainen (921fe06624) + + lib-storage: Change mail_precache() API to allow returning an error + + +M src/lib-storage/fail-mail.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h +M src/lib-storage/mail-storage-private.h +M src/lib-storage/mail-storage.h +M src/lib-storage/mail.c +M src/plugins/fts/fts-storage.c +M src/plugins/virtual/virtual-mail.c + +2021-02-23 16:32:39 +0200 Aki Tuomi (576d40df2c) + + Makefile: Always include dovecot.socket and dovecot.service + + +M Makefile.am + +2021-02-23 12:52:29 +0200 Aki Tuomi (21ca65f26d) + + lib-master: Always import systemd related variables with systemd + + Otherwise it is too easy to break systemd integration by forgetting these + from import_environment. + +M src/lib-master/master-service.c + +2021-02-22 16:14:14 +0200 Aki Tuomi (6e811f1aec) + + master: Improve systemd integration + + +M src/master/main.c + +2021-02-22 15:29:48 +0200 Aki Tuomi (a42bb363b4) + + master: Use libsystemd instead of local source + + +M Makefile.am +M configure.ac +M src/lib-master/master-service-settings.c +M src/master/Makefile.am +M src/master/main.c +D src/master/sd-daemon.c +D src/master/sd-daemon.h +M src/master/service-listen.c + +2021-02-23 16:08:28 +0200 Aki Tuomi (19e05adc36) + + master: service-listen - Use dovecot coding standard for systemd code + + +M src/master/service-listen.c + +2021-02-22 16:01:49 +0200 Timo Sirainen (92f7801e67) + + lib-imap-client: Add asserts to make sure running commands always have a + timeout + + +M src/lib-imap-client/imapc-connection.c + +2021-02-22 15:41:42 +0200 Timo Sirainen (e8da1037b9) + + lib-imap-client: Don't remove global command timeouts when mailbox is + unselected + + +M src/lib-imap-client/imapc-connection.c + +2021-02-22 13:15:18 +0200 Timo Sirainen (ae48fa6fac) + + lib-imap-client: Fix busy-loop if server disconnects too early when trying + to logout + + This can happen if: + * imapc sends NOOP to break idle + * remote server sends BYE, but doesn't immediately disconnect + * session is stopped, which causes imapc to attempt to send LOGOUT + * imapc waits for NOOP response first + * remote server disconnects + * imapc notices the disconnection, but does nothing with it, because it + thinks it's already handled. This keeps busy-looping. + * If there was a mailbox selected, this results in infinite busy-loop. If a + mailbox wasn't selected, imapc_cmd_timeout aborts the NOOP command. + +M src/lib-imap-client/imapc-connection.c + +2021-02-24 17:51:19 +0200 Timo Sirainen (eea988f038) + + lib-mail: message-parser - Always properly finish parsed input + + If the caller hadn't called message_parser_parse_next_block() after seeing + EOF in the istream, the deinit could have crashed with: + + Panic: file message-parser.c: line 802 (message_parser_deinit_from_parts): + assertion failed: (ctx->nested_parts_count == 0 || + i_stream_have_bytes_left(ctx->input)) + +M src/lib-mail/message-parser.c + +2021-03-01 12:03:45 +0200 Timo Sirainen (96626062da) + + lib: io_loop_context_new() - Fix memory leak + + Broken by fea09a415cf89223d8b17c5982257c9b3c357cbc + +M src/lib/ioloop.c + +2021-02-18 14:43:06 +0200 Timo Sirainen (6b28234f3d) + + login-common: Fix implicit integer conversions when connect timeout is + reached + + +M src/login-common/login-proxy.c + +2021-02-03 20:48:51 +0200 Timo Sirainen (e73be660c5) + + lmtp: Fix log prefix when autoexpunge is running + + The username was missing from the log prefix. + +M src/lmtp/lmtp-local.c + +2021-02-03 20:42:50 +0200 Timo Sirainen (fea09a415c) + + lib: io_loop_context_new() no longer implicitly activates the context + + The new behavior requires explicitly activating the context. This change was + needed, because an implicit creation activated the context but didn't call + any of the callbacks. If ioloop wasn't run, the activation callbacks were + never called. This meant that when context was deactivated, the deactivation + callbacks weren't run either. + +M src/imap-hibernate/imap-client.c +M src/lib-storage/mail-storage-service.c +M src/lib/ioloop.c +M src/lib/ioloop.h + +2021-02-17 19:33:03 +0200 Timo Sirainen (b32b3f989d) + + lib-storage: Replace i_error() and i_warning() with e_error() and + e_warning() + + This changes only the generic code. The driver-specific code still needs + changing. + +M src/lib-storage/list/mailbox-list-fs-iter.c +M src/lib-storage/list/mailbox-list-index-notify.c +M src/lib-storage/list/mailbox-list-maildir-iter.c +M src/lib-storage/list/mailbox-list-subscriptions.c +M src/lib-storage/mail-autoexpunge.c +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage.c +M src/lib-storage/mail-user.c +M src/lib-storage/mailbox-guid-cache.c +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-uidvalidity.c + +2021-02-18 12:20:20 +0200 Timo Sirainen (26bf371412) + + lib-storage: test-mailbox-list - Initialize namespace, user and event + + Required by the following change. + +M src/lib-storage/test-mailbox-list.c + +2021-02-17 19:28:03 +0200 Timo Sirainen (e9912fbbff) + + lib-storage: mail-duplicate - Replace i_error() with e_error() + + +M src/lib-storage/mail-duplicate.c + +2021-02-17 19:16:58 +0200 Timo Sirainen (ad13ab0702) + + lib-storage: Add functions to get log prefixes + + This changes the log prefixes to be stored even when + MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT is used. + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h + +2021-02-03 20:37:49 +0200 Timo Sirainen (d46404a323) + + lib-storage: Initialize service_user's logging before creating ioloop + context + + Needed by the next change. + +M src/lib-storage/mail-storage-service.c + +2021-02-03 20:35:02 +0200 Timo Sirainen (e5caac3a90) + + lib-storage: Add PID to the default log prefix + + +M src/lib-storage/mail-storage-service.c + +2021-02-16 13:39:02 +0200 Aki Tuomi (120f30fbd4) + + doc/example: 10-metrics.conf - Add metrics related settings + + +A doc/example-config/conf.d/10-metrics.conf +M doc/example-config/conf.d/Makefile.am + +2021-02-16 13:25:40 +0200 Aki Tuomi (4bc2e75557) + + doc/eaxmple: 10-logging.conf - Update syntax example to point to online + documentation + + +M doc/example-config/conf.d/10-logging.conf + +2021-02-18 18:58:29 +0200 Timo Sirainen (9d269602cb) + + lib: event_get_last_duration() - Change it to return uintmax_t + + It can't be negative, so unsigned return value makes more sense. Also + clarify the function comment and parameter name. + +M src/lib/lib-event.c +M src/lib/lib-event.h +M src/lib/test-event-log.c +M src/stats/stats-metrics.c + +2021-02-18 16:25:50 +0000 Siavash Tavakoli (b811181069) + + stats: openmetrics: Do microsecond to seconds conversion only for duration + values + + Other metrics should be exported with their values unchanged. + +M src/stats/stats-service-openmetrics.c + +2021-02-16 21:06:50 +0100 Martin Michaelis (9efdef3083) + + stats: openmentrics: Change histogram bucket unit to seconds + + In ae678116a79fff609cdf4fb1eb7eb3db2975bf1c the unit of durations was + changed from microseconds to seconds, but the `le` field in histograms is + still in microseconds. + +M src/stats/stats-service-openmetrics.c + +2021-02-18 21:39:09 +0000 Siavash Tavakoli (e73615a40f) + + stats: refactor duration field name into a macro + + +M src/stats/stats-metrics.c +M src/stats/stats-metrics.h + +2021-02-16 15:39:24 +0200 Timo Sirainen (a48bab26c6) + + lib-master: If config reading via doveconf exec fails, show details in the + error + + +M src/lib-master/master-service-settings.c + +2021-02-16 15:38:36 +0200 Timo Sirainen (d199f1369b) + + lib-master: Reset master_service.config_path_from_master if -c parameter is + used + + This doesn't fix anything currently, but clarifies the behavior and is + needed by the following commit. + +M src/lib-master/master-service.c + +2019-01-04 09:57:37 +0100 Stephan Bosch (cd17ae1d77) + + plugins: fts-solr: Use a private HTTP client. + + This is a workaround for problems with the + http_client_request_send_payload() API that occur when several shared HTTP + clients use this API at the same time and payload sending gets interleaved. + +M src/plugins/fts-solr/solr-connection.c + +2019-01-04 09:55:20 +0100 Stephan Bosch (0d24830967) + + plugins: fts: tika: Use a private HTTP client. + + This is a workaround for problems with the + http_client_request_send_payload() API that occur when several shared HTTP + clients use this API at the same time and payload sending gets interleaved. + +M src/plugins/fts/fts-parser-tika.c + +2021-02-17 13:18:55 +0200 Timo Sirainen (dc5e992d33) + + lib: test-cpu-limit - Increase ALLOW_MSECS_BELOW to 500ms + + The test still randomly failed with 100ms. Maybe 500ms is enough? + +M src/lib/test-cpu-limit.c + +2021-02-17 13:18:38 +0200 Timo Sirainen (3178728945) + + lib: test-cpu-limit - Use test_assert_cmp() + + +M src/lib/test-cpu-limit.c + +2021-02-18 14:23:50 +0200 Timo Sirainen (09cb1a7d08) + + lib-test: Add test_assert_ucmp[_idx]() + + These are the unsigned versions of test_assert_cmp*() + +M src/lib-test/test-common.c +M src/lib-test/test-common.h + +2021-02-17 13:17:43 +0200 Timo Sirainen (1bb6d7189b) + + lib-test: Add test_assert_cmp[_idx]() + + Similar to test_assert_strcmp() but for numbers: If the comparison fails, + print the values and the used operator. + +M src/lib-test/test-common.c +M src/lib-test/test-common.h + +2021-02-17 11:49:44 +0100 Markus Valentin (02bec0cfeb) + + acl: acl_lookup_dict_rebuild_update() + + Initialize dict_transaction_context *dt with NULL. Due to the changes done + in bfa7433bfcf538af7c4fdafe37a88bde6508c751 dt could be used uninitialized. + +M src/plugins/acl/acl-lookup-dict.c + +2021-02-17 01:02:34 +0200 Timo Sirainen (bf86675d35) + + Makefile.am: Don't delete dovecot.socket in make clean + + Broken by 0650928f3e3728911d6bcea4daf743df02ec1b3d + +M Makefile.am + +2020-12-21 21:02:23 -0700 Michael M Slusarz (d275fba32b) + + imap: Fix PREVIEW behavior to support RFC 8970 + + +M README.md +M configure.ac +M src/imap/imap-fetch-body.c +M src/imap/imap-fetch.h + +2021-02-17 14:40:06 +0200 Timo Sirainen (1227b34da9) + + mbox: Fix potentially logging read error when there was no error + + Broken by 959385969388b2d4f6d3d0218fa175481cb46c8a + +M src/lib-storage/index/mbox/istream-raw-mbox.c + +2021-02-10 13:13:34 +0200 Timo Sirainen (c4f4058d16) + + imap: NOTIFY - Fix crash if client disconnects while sending FETCH + notification + + Fixes: Panic: Trying to close mailbox INBOX with open transactions + +M src/imap/imap-notify.c +M src/imap/imap-sync.c + +2021-02-03 17:38:08 +0200 Timo Sirainen (c09b7032c1) + + doveadm: Avoid duplicate error logging with doveadm_print_istream() + + +M src/doveadm/doveadm-print.c +M src/doveadm/doveadm-print.h + +2021-02-03 17:34:01 +0200 Timo Sirainen (da7208fb96) + + lib-compression, global: Remove support for implicit error logging + + +M src/doveadm/doveadm-zlib.c +M src/lib-compression/bench-compression.c +M src/lib-compression/compression.h +M src/lib-compression/istream-bzlib.c +M src/lib-compression/istream-decompress.c +M src/lib-compression/istream-lz4.c +M src/lib-compression/istream-lzma.c +M src/lib-compression/istream-zlib.c +M src/lib-compression/istream-zlib.h +M src/lib-compression/istream-zstd.c +M src/lib-compression/ostream-zstd.c +M src/lib-compression/test-compression.c +M src/plugins/imap-zlib/imap-zlib-plugin.c +M src/plugins/zlib/zlib-plugin.c + +2021-02-03 17:04:49 +0200 Timo Sirainen (1a388627f1) + + doveadm zlibconnect: Avoid duplicate error logging + + The istream errors are already logged with i_fatal(). There's no need for a + duplicate error. + +M src/doveadm/doveadm-zlib.c + +2021-02-03 17:04:16 +0200 Timo Sirainen (e58e57cb7e) + + doveadm dump -t imapzlib: Explicitly log compress istream errors + + +M src/doveadm/doveadm-zlib.c + +2021-02-03 16:57:30 +0200 Timo Sirainen (fb92b79819) + + zlib: Remove extra error logging for istream failures + + The error will nowadays be logged as the istream error anyway. + +M src/plugins/zlib/zlib-plugin.c + +2021-02-03 17:32:11 +0200 Timo Sirainen (9593859693) + + mbox: istream-raw-mbox - Log parent istream read errors + + +M src/lib-storage/index/mbox/istream-raw-mbox.c + +2021-02-03 17:18:18 +0200 Timo Sirainen (1ae18869a5) + + mbox: Use mbox_ostream_set_syscall_error() + + +M src/lib-storage/index/mbox/mbox-save.c +M src/lib-storage/index/mbox/mbox-sync-rewrite.c + +2021-02-03 17:24:14 +0200 Timo Sirainen (e884af64a7) + + mbox: Use mbox_istream_set_syscall_error() + + +M src/lib-storage/index/mbox/mbox-sync.c + +2021-02-03 17:18:09 +0200 Timo Sirainen (b00e7d5660) + + mbox: Add mbox_[io]stream_set_syscall_error() + + This allows logging the iostream-specific error rather than the more generic + errno. + +M src/lib-storage/index/mbox/mbox-storage.c +M src/lib-storage/index/mbox/mbox-storage.h + +2020-04-23 15:26:22 +0300 Alex/AT (f753ea9b31) + + lib-master: Fix haproxy PROXY protocol LOCAL type connection behavior when + header includes address information or TLVs + + PROXY protocol LOCAL type headers can actually include supplementary + information (addresses, TLVs) which need to be skipped to correctly handle + the header. Fixes Invalid TLV bug with haproxy 2.0.14 service checks. + + More info here: https://github.com/haproxy/haproxy/issues/511 And here: + https://www.mail-archive.com/haproxy@formilux.org/msg36890.html + +M src/lib-master/master-service-haproxy.c + +2021-02-16 16:40:35 +0200 Timo Sirainen (ded811b345) + + lib: cpu-limit - Don't round current CPU usage up when checking if rlim_max + is reached + + The fatal error could trigger half a second too early. + + Also always increase the provided cpu_limit_sec by 1 second to make sure it + won't trigger too early. Although even with this change it can still trigger + a few milliseconds too early for some reason. + +M src/lib/cpu-limit.c + +2021-02-16 16:42:54 +0200 Timo Sirainen (5b87dcaf94) + + lib: cpu-limit - Allow time comparisons to be more relaxed + + This should fix random failures. + +M src/lib/test-cpu-limit.c + +2020-11-10 16:33:41 +0200 Timo Sirainen (7db69420cf) + + lib-storage: Fix assert-crash when parsing binary attachments + + EOF may not have been detected in the cur_block istream early enough, + causing the calculation to go wrong. This happened at least with empty + base64 bodies, but could have possibly happened in other situations also. + + Fixes: Panic: file index-mail-binary.c: line 357 (blocks_count_lines): + assertion failed: (block_count == 0 || block_idx+1 == block_count) + +M src/lib-storage/index/index-mail-binary.c + +2021-02-12 14:45:39 +0200 Aki Tuomi (1f135ee6d2) + + config: test-config-parser - Change filename to match .gitignore pattern + + +M src/config/test-config-parser.c + +2021-02-12 14:32:01 +0200 Aki Tuomi (412d9554e9) + + config: test-config-parser - Cleanup input file after test + + +M src/config/test-config-parser.c + +2021-02-01 15:38:49 +0100 Markus Valentin (bfa7433bfc) + + acl: acl_lookup_dict_rebuild_update() - Commit transaction after each + [un]set + + When used with Cassandra an error can occur if multiple changes are included + into one transaction: "Multiple changes in transaction not supported". + Prevent these errors by committing every change on it's own. + +M src/plugins/acl/acl-lookup-dict.c + +2020-12-16 00:13:19 +0200 Timo Sirainen (5d3d8e5dac) + + lib-storage: Fix assert-crash in shared namespace if storage has no + directories + + This allows using imapc with shared namespaces. + + Fixes: Panic: file mailbox-list.c: line 1419: unreached + +M src/lib-storage/index/shared/shared-storage.c + +2020-12-16 00:09:32 +0200 Timo Sirainen (32da598980) + + acl: Add acl_ignore_namespace* settings + + Ignore ACLs entirely for the listed namespaces. For example: + + plugin { + acl_ignore_namespace = virtual/ + acl_ignore_namespace2 = shared/* + } + +M src/plugins/acl/acl-mailbox-list.c + +2021-02-07 09:23:03 +0100 Simon Rupf (da1dad0097) + + util: health-check - Timeout the read via trap for POSIX shell compatibility + + +M src/util/health-check.sh + +2021-01-23 11:29:22 +0100 Simon Rupf (5510fd8854) + + util: health-check - Consistent variable style + + +M src/util/health-check.sh + +2021-01-23 11:07:36 +0100 Simon Rupf (ce3a0fdd36) + + util: health-check - Made bash script compatible with dash shell + + +M src/util/health-check.sh + +2020-05-24 23:15:53 +0200 Nis Martensen (0650928f3e) + + Makefile.am: fix typo and broken variable assignment + + +M Makefile.am + +2020-05-24 22:05:42 +0200 Nis Martensen (daee059866) + + systemd integration: notify service manager when ready + + With Type=simple or Type=forking, systemd does not really know when the + service is ready to accept connections and might start depending services + too early. Use Type=notify to explicitly tell the service manager when the + service is ready. + + For a real problem caused by assuming readiness too early, please see + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=951722 + + For the meaning of the service type and details of the readiness protocol, + see also the following links: + https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type= + https://www.freedesktop.org/software/systemd/man/sd_notify.html + + As discussed in the last link, more elaborate state notifications are + possible. This patch only implements the most basic part. + + Original patch prepared by Michael Biebl, with slight modification. + +M dovecot.service.in +M src/lib-master/master-service-settings.c +M src/master/main.c + +2020-10-29 01:04:26 +0100 Stephan Bosch (ea851d0745) + + lib: Add API for limiting CPU usage of subroutines. + + +M src/lib/Makefile.am +A src/lib/cpu-limit.c +A src/lib/cpu-limit.h +A src/lib/test-cpu-limit.c +M src/lib/test-lib.inc + +2020-10-29 01:09:17 +0100 Stephan Bosch (3ce88c8669) + + lib: time-util - Add support for rounding off timeval to a time_t value. + + +M src/lib/time-util.h + +2020-10-29 01:06:57 +0100 Stephan Bosch (f3fff8e029) + + lib: time-util - Add support for calculating the sum of two timeval values. + + +M src/lib/time-util.h + +2021-02-01 12:33:02 +0000 Siavash Tavakoli (4341feba66) + + run-test-valgrind.supp: Add more suppressions + + +M run-test-valgrind.supp + +2021-01-28 23:09:00 +0000 Siavash Tavakoli (6e13107de7) + + dsync: Add namespace prefixes to mailbox tree + + Adds syncing selectable namespace prefixes, especially shared INBOXes with + "mail_shared_explicit_inbox=yes". + +M src/doveadm/dsync/dsync-mailbox-tree-fill.c + +2021-01-07 09:40:51 +0000 Siavash Tavakoli (6832759cf5) + + dsync: Check namespace prefix when syncing shared namespaces + + When iterating over namespaces, comparing namespace pointers doesn't work + for shared namespaces. Instead, check the prefix and include all the + mailboxes in the namespace for syncing. + +M src/doveadm/dsync/dsync-brain.c + +2021-01-19 10:33:17 +0000 Siavash Tavakoli (cd0a0a4240) + + dsync: Don't send out of tree namespace parents for syncing + + For namespaces prefixes with multiple hierarchical names, we shouldn't send + parents (i.e. first part/parts of the prefix) that are outside of syncing. + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2021-02-04 20:54:14 +0000 Siavash Tavakoli (c452b7177e) + + lib-storage: Cache mailbox's namespace prefix if selectable + + If namespace prefix is a selectable mailbox, mailbox_guid_cache_refresh + should add it to cache. + +M src/lib-storage/mailbox-guid-cache.c + +2021-02-04 15:57:09 +0000 Siavash Tavakoli (fd350bc887) + + lib-storage: Add mailbox_guid_cache_add_mailbox() + + Refactored caching logic in mailbox_guid_cache_refresh to this new function. + +M src/lib-storage/mailbox-guid-cache.c + +2021-02-04 20:52:19 +0000 Siavash Tavakoli (74005f66c0) + + lib-storage: Add mail_namespace_prefix_is_inbox() + + +M src/lib-storage/mail-namespace.h + +2021-02-04 01:42:52 +0000 Siavash Tavakoli (be9a813f05) + + lib-storage: Skip private server attributes for shared inboxes + + Private server attributes should be iterated only for user's own inbox. + +M src/lib-storage/mailbox-attribute.c + +2021-02-01 17:53:59 +0000 Siavash Tavakoli (27b25d6942) + + lib-storage: mailbox-list-iter: Send delayed inbox after actually seeing the + inbox + + Control delayed inbox listing with a flag in ns_list_iterate_context. Send + only when the inbox is actually seen. + +M src/lib-storage/list/mailbox-list-iter.c + +2021-02-02 12:43:50 +0000 Siavash Tavakoli (f137dce5b6) + + lib-index: Fix implicit integer truncation found by ubsan + + +M src/lib-index/mail-index-transaction-view.c + +2021-02-03 15:55:14 +0200 Timo Sirainen (9accb79b48) + + lib-index: Avoid a duplicate "missing middle file seq" warning. + + The previous changes fixed repeating warning, but it was still possible that + the warning was logged twice. Now it's logged only once. + +M src/lib-index/mail-index-view-sync.c + +2021-02-01 17:49:18 +0200 Timo Sirainen (f47f204636) + + lib-index: Change "missing middle file seq" error into warning + + It's not really an error, but it has been useful in finding performance + problems. Possibly it should be changed into a named event at some point. + +M src/lib-index/mail-index-view-sync.c + +2021-02-01 17:02:24 +0200 Timo Sirainen (c118345086) + + lib-index: view_sync_set_log_view_range() - Move error logging to parent + + +M src/lib-index/mail-index-view-sync.c + +2021-02-01 16:53:18 +0200 Timo Sirainen (c038c664ea) + + lib-index: Fix repetitive "missing middle file seq" error. + + If a view keeps being synced with MAIL_INDEX_VIEW_SYNC_FLAG_NOEXPUNGES, + every sync regenerated the missing log files and logged this error. This + could have resulted in lots of errors being logged about it, as well as + unnecessary CPU usage. + + The view syncing was always syncing from the last "expunge log position", + even when expunges weren't being synced. The new behavior is to do that only + when expunges are synced, but otherwise use the "head log position" to sync + only the new changes since the last view sync. + + The error is now logged once when the log is first noticed being lost. + Another error is logged when pending expunges are synced. + +M src/lib-index/mail-index-view-sync.c + +2021-01-26 09:30:42 +0200 Aki Tuomi (93014e52f8) + + m4: dovecot.m4 - Execute tests with libtool + + This allows libtool to do all the necessary preparations before test harness + is used. + +M m4/dovecot.m4 + +2021-01-26 09:29:44 +0200 Aki Tuomi (c0b98d9284) + + m4: dovecot.m4 - Find out and use absolute path to valgrind + + +M m4/dovecot.m4 + +2021-02-08 10:05:47 +0200 Aki Tuomi (a25fa78789) + + lib-settings: test-settings-parser - Use ULL suffix + + Some of the sizes do not fit to UL in 32 bit systems. + +M src/lib-settings/test-settings-parser.c + +2021-01-22 14:00:21 -0500 Josef 'Jeff' Sipek (6e5ae5ef0f) + + lib-compression: Remove xz/lzma write support + + For now, we keep the read support to allow for a more gradual migration from + lzma/xz. + + The code has bugs. Additionally, there is no benefit in keeping it around. + bzip2 or zstd (at maximum compression level) are likely better choices for + archival. For non-archival usecases, a light compression algorithm like + zstd (at low to medium compression level) or lz4 are better choices. + +M configure.ac +M run-test-valgrind.supp +M src/lib-compression/Makefile.am +M src/lib-compression/compression.c +D src/lib-compression/ostream-lzma.c +M src/lib-compression/ostream-zlib.h +M src/lib-compression/test-compression.c + +2021-01-28 17:04:37 +0200 Aki Tuomi (4b1c694608) + + lib-mail: test-message-snippet - Add unit tests for multipart messages + + +M src/lib-mail/test-message-snippet.c + +2021-02-03 17:22:07 +0200 Aki Tuomi (c8c1e9d840) + + lib-mail: test-message-snippet - Use test_assert_strcmp + + Makes it easier to see what failed. + +M src/lib-mail/test-message-snippet.c + +2021-01-28 16:52:10 +0200 Aki Tuomi (5f9da73421) + + lib-mail: Reformat test-message-snippet.c + + +M src/lib-mail/test-message-snippet.c + +2021-01-28 17:01:38 +0200 Aki Tuomi (c276029aed) + + lib-mail: message-snippet - Stop building snippet on first non-empty part + + When we have gotten some snippet out of first eligible part, we can stop. + +M src/lib-mail/message-snippet.c + +2021-01-28 16:48:05 +0200 Aki Tuomi (964e60417a) + + lib-mail: message-snippet - Do not stop on first non-text part + + Some mail structures would break snippet generation because the code would + stop on multipart. + +M src/lib-mail/message-snippet.c + +2021-01-28 11:07:32 +0200 Aki Tuomi (c5842d9cfe) + + lib-mail: message-snippet - Free html parser before making new + + If html parser has already been initialized, free it before restarting the + parser. + + Fixes memory leak introduced by 7f7be2cbf68f8a202a688d5bc50f82483d461643 + +M src/lib-mail/message-snippet.c + +2021-02-04 08:59:29 +0200 Aki Tuomi (bf8286ac5b) + + stats: stats-service-openmetrics - Use PRIdTIME_T for startup time + + +M src/stats/stats-service-openmetrics.c + +2021-02-04 08:57:24 +0200 Aki Tuomi (b97fa96434) + + login: login-proxy - Fix type conflict + + +M src/login-common/login-proxy.c + +2021-02-04 08:54:59 +0200 Aki Tuomi (77de43799e) + + lib-mail: test-message-header-decode - Use ptrdiff_t for rep_char_len + + The length is compared to a pointer difference, so using ptrdiff_t squashes + a warning. + +M src/lib-mail/test-message-header-decode.c + +2021-02-04 08:46:51 +0200 Aki Tuomi (e38c52558e) + + lib-settings: test-setting-parser - Use correct type in test + + SIZE uses uoff_t. + +M src/lib-settings/test-settings-parser.c + +2021-02-04 08:45:37 +0200 Aki Tuomi (8aa7f840c6) + + lib: backtrace - Use correct format modifier + + Matches size_t correctly. + +M src/lib/backtrace-string.c + +2021-02-04 08:44:46 +0200 Aki Tuomi (01366bd18e) + + lib: test-time-util - Use correct types for test case + + Fixes type mismatch on 32-bit systems. + +M src/lib/test-time-util.c + +2021-01-19 19:11:47 +0100 Timo Sirainen (0ac71cbbc9) + + master: Fix reopening log files on SIGUSR1 + + +M src/master/main.c + +2021-01-19 19:11:20 +0100 Timo Sirainen (34f7b38b50) + + man: Clarify how doveadm log reopen works + + +M doc/man/doveadm-log.1.in + +2021-01-28 16:45:45 +0100 Timo Sirainen (260b49d7a3) + + dovecot.service.in: Update documentation URL + + +M dovecot.service.in + +2021-01-22 13:19:05 +0200 Timo Sirainen (264d67d6f0) + + lib-master: test-event-stats - Fix unit test when compiling using build + directory + + When using build directory __FILE__ expands to + "../../../src/lib-master/test-event-stats.c", which doesn't match + "test-event-stats.c" what is normally used. + +M src/lib-master/test-event-stats.c + +2021-01-18 18:14:47 +0200 Aki Tuomi (001d919b9d) + + lib-master: test-event-stats - Cast test value to uint64_t + + +M src/lib-master/test-event-stats.c + +2021-01-04 16:31:03 +0000 Paul Howarth (2cc1feca90) + + lib: Fix timeval_cmp_margin for 32-bit systems + + The test suite compares times with seconds values of -INT_MAX and INT_MAX. + The result of this comparison does not fit in a value of type int and so the + test suite fails on 32-bit systems where time_t is an int. To fix this, + calculations on seconds values are done using long long integers. + + Broken by 16ab5542 + +M src/lib/time-util.c + +2021-01-26 17:44:46 +0200 Timo Sirainen (195f6742c3) + + dsync: Use a better default vname escape character + + A control character was a bit unreadable in strings. + +M src/doveadm/doveadm-dsync.c + +2021-01-26 18:55:22 +0200 Timo Sirainen (00c7664505) + + dsync: Replace escape characters in outgoing mailbox names with alt_char + + Especially when dsync is used for migration, we don't want to end up having + invalid mUTF7 mailbox names locally. Also, remote might not even be + configured to use the same escape character. + +M src/doveadm/dsync/dsync-brain-mailbox-tree.c + +2021-01-26 18:54:53 +0200 Timo Sirainen (11b549e552) + + dsync: Send alt_char also to slave brain + + +M src/doveadm/doveadm-dsync.c +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-brain.h +M src/doveadm/dsync/dsync-ibc-stream.c +M src/doveadm/dsync/dsync-ibc.h +M src/doveadm/dsync/dsync-mailbox-tree.c + +2021-01-18 23:53:50 +0200 Timo Sirainen (ae3de56ed9) + + lib-storage: mailbox_list_escape_name_params() - Assert that escape_char + isn't NUL + + +M src/lib-storage/mailbox-list.c + +2021-01-15 19:27:00 +0200 Timo Sirainen (d02d59d343) + + imapc: Add comment explaining various mailbox names + + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-18 23:31:28 +0200 Timo Sirainen (b4ae3a5fac) + + imapc: fs mailbox_list - Remove vname_escape_char + + This isn't necessary. + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-18 23:30:28 +0200 Timo Sirainen (1535a2ddbb) + + imapc: Add IMAPC_LIST_FS_NAME_ESCAPE_CHAR + + This clarifies how the escape characters are used. + +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-storage.h + +2021-01-18 23:23:37 +0200 Timo Sirainen (2a42647297) + + imapc: Add a default vname_escape_char + + Having vname_escape_char guarantees that all the remote mailbox names are + accessible by escaping them as necessary. + +M src/lib-storage/index/imapc/imapc-storage.c + +2021-01-18 23:19:01 +0200 Timo Sirainen (6abcea7e0a) + + imapc: Fix local filesystem directory name escaping + + Use the remote mailbox name as the base. Convert the hierarchy separator and + add escaping as necessary. + + The old method was based on storage_name, and it's a bit unclear if it + worked correctly in all situations. + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-16 17:20:46 +0200 Timo Sirainen (fc0be41d1d) + + imapc: Add imapc_list_remote_to_storage_name() + + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-16 15:03:59 +0200 Timo Sirainen (d8d1e4db34) + + imapc: Fix remote/storage mailbox name mismatches + + +M src/lib-storage/index/imapc/imapc-storage.c + +2021-01-16 15:00:06 +0200 Timo Sirainen (0e2c465f45) + + imapc: Use more explicit mailbox name variable names + + Clearly specify which type of a mailbox name it is to avoid + misunderstandings. + +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-storage.c + +2021-01-16 14:44:00 +0200 Timo Sirainen (ec9ad14e8a) + + imapc: Rename imapc_list_get_fs_name() to imapc_list_storage_to_fs_name() + + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-16 14:41:24 +0200 Timo Sirainen (caa30d512b) + + imapc: Rename imapc_list_to_vname() to imapc_list_remote_to_vname() + + +M src/lib-storage/index/imapc/imapc-list.c + +2021-01-16 14:40:54 +0200 Timo Sirainen (b840f1fc1e) + + imapc: Rename imapc_list_to_remote() to imapc_list_storage_to_remote_name() + + +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-list.h +M src/lib-storage/index/imapc/imapc-storage.c + +2021-01-14 17:45:07 +0200 Timo Sirainen (bd8839f99c) + + lib-storage: mailbox_list_default_get_storage_name() - Escape + ns_prefix/INBOX if possible + + If storage_name_escape_char is set, escape the "I" letter in the + storage_name if the namespace also has inbox=yes. This way it's possible to + distinguish between the actual INBOX and ns_prefix/INBOX. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/test-mailbox-list.c + +2021-01-14 17:33:13 +0200 Timo Sirainen (a243cdb748) + + lib-storage: Update mailbox_list_settings.{vname|storage_name}_escape_char + comments + + Also add the examples in the comments to unit tests to make sure they really + work. + +M src/lib-storage/mailbox-list.h +M src/lib-storage/test-mailbox-list.c + +2021-01-14 17:27:03 +0200 Timo Sirainen (73364f0f2b) + + lib-storage: Fix mailbox name escape/unescape ordering + + This fixes some cases like not properly escaping '/' in storage_name if it + was also the namespace separator. This also allows using the same character + for both vname_escape_char and storage_name_escape_char. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/test-mailbox-list.c + +2021-01-14 17:07:34 +0200 Timo Sirainen (6adcea35e5) + + lib-storage: mailbox_list_default_get_vname() - Fix escaping namespace + separator in storage_name + + For example if { storage_name="foo/bar", storage_sep=".", ns_sep="/" } the + "/" in the name shouldn't be treated as a namespace separator. If + vname_escape_char is set, it should be returned escaped instead. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/test-mailbox-list.c + +2021-01-14 16:38:04 +0200 Timo Sirainen (e3be8553d3) + + lib-storage: Use imap_escaped_utf8_to_utf7() + + +M src/lib-storage/mailbox-list.c + +2021-01-14 16:32:25 +0200 Timo Sirainen (c50fd4ddf1) + + lib-storage: Use imap_escaped_utf8_hex_to_char() + + +M src/lib-storage/mailbox-list.c + +2021-01-14 16:23:24 +0200 Timo Sirainen (9d41e00eda) + + lib-storage: Use mailbox_list_settings.vname_escape_char also with utf8 + storage names + + mailbox_list_default_get_storage_name() was already unescaping with utf8, so + mailbox_list_default_get_vname() should also be escaping with utf8. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/test-mailbox-list.c + +2021-01-14 15:40:44 +0200 Timo Sirainen (6da08d8c61) + + lib-storage: mailbox_list_default_get_vname() - Use + imap_utf7_to_utf8_escaped() + + This changes the output a bit for broken mUTF7 names. Previously if any part + of the string had broken mUTF7 input, none of it was converted. Now it's + instead trying to convert as much as it can. + +M src/lib-storage/mailbox-list.c +M src/lib-storage/test-mailbox-list.c + +2021-01-14 15:09:34 +0200 Timo Sirainen (5f858f84b9) + + lib-storage: mailbox_list_default_get_vname() - Escape each hierarchical + name separately + + Same reasoning as for the similar change for + mailbox_list_default_get_storage_name(). + +M src/lib-storage/mailbox-list.c + +2021-01-14 12:47:55 +0200 Timo Sirainen (af18e441c9) + + lib-storage: Split off mailbox_list_storage_name_prepare() + + +M src/lib-storage/mailbox-list.c + +2021-01-14 12:34:48 +0200 Timo Sirainen (8f139ccc9f) + + lib-storage: mailbox_list_default_get_storage_name() - Escape each + hierarchical name separately + + This makes it possible in the following commits to allow unescaping to write + namespace hierarchy separator character without converting it into the + mailbox_list separator. + +M src/lib-storage/mailbox-list.c + +2021-01-14 12:30:54 +0200 Timo Sirainen (5fd5ad3a2b) + + lib-storage: mailbox_list_default_get_storage_name() - Cleanup shared + namespace root handling + + +M src/lib-storage/mailbox-list.c + +2021-01-14 12:03:58 +0200 Timo Sirainen (0dc071a974) + + lib-storage: Split off mailbox_list_vname_prepare() + + This also slightly changes the code logic. mailbox_list_escape_name() is now + called also for INBOX, but that doesn't actually matter. + +M src/lib-storage/mailbox-list.c + +2021-01-14 15:22:20 +0200 Timo Sirainen (4224bb8302) + + lib-storage: Remove mailbox_list_unescape_name() by moving its code inline + + There was only a single caller for this function. It doesn't need to exist. + +M src/lib-storage/mailbox-list-private.h +M src/lib-storage/mailbox-list.c + +2021-01-14 15:20:13 +0200 Timo Sirainen (20e26b52d5) + + lib-storage: Remove mailbox_list_escape_name() by moving its code inline + + There was only a single caller for this function. It doesn't need to exist. + +M src/lib-storage/mailbox-list-private.h +M src/lib-storage/mailbox-list.c + +2021-01-13 20:55:43 +0200 Timo Sirainen (71877ef5e4) + + lib-storage: Add unit tests for + mailbox_list_default_get_{storage_name|vname}() + + +M src/lib-storage/test-mailbox-list.c + +2021-01-13 18:50:38 +0200 Timo Sirainen (7b794d3070) + + lib-storage: Rename mailbox_list_settings.broken_char to vname_escape_char + + This clarifies that it's only used in vnames. + +M src/doveadm/doveadm-dsync.c +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-storage.h +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-list.h + +2021-01-13 18:47:11 +0200 Timo Sirainen (5cfd6cec1d) + + lib-storage: Rename mailbox_list_settings.escape_char to + storage_name_escape_char + + This clarifies that it's only used in storage_names. + +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/imapc/imapc-storage.h +M src/lib-storage/mail-storage.c +M src/lib-storage/mailbox-list.c +M src/lib-storage/mailbox-list.h +M src/plugins/listescape/listescape-plugin.c + +2021-01-13 19:50:50 +0200 Timo Sirainen (bffa6a9c0c) + + lib-imap: Add imap_utf7_to_utf8_escaped() and imap_escaped_utf8_to_utf7() + + These can be used to convert invalid mUTF-7 to escaped UTF-8 and back to the + original invalid input. + +M src/lib-imap/imap-utf7.c +M src/lib-imap/imap-utf7.h +M src/lib-imap/test-imap-utf7.c + +2021-01-13 19:48:15 +0200 Timo Sirainen (db7054d86a) + + lib-imap: test-imap-utf7 - Simplify test_imap_utf7_non_utf16() + + +M src/lib-imap/test-imap-utf7.c + +2021-01-13 19:19:37 +0200 Timo Sirainen (40070778c0) + + lib-imap: Move unnecessary shift check to mbase64_decode_to_utf8() + + +M src/lib-imap/imap-utf7.c + +2021-01-13 19:17:18 +0200 Timo Sirainen (02f35f281e) + + lib-imap: test-imap-utf7 - Improve/clarify testing '&' + + & is never base64-encoded. + +M src/lib-imap/test-imap-utf7.c + +2021-01-25 13:32:18 +0200 Aki Tuomi (aeea2ce10e) + + config: Add unit test for config parser + + +M src/config/Makefile.am +A src/config/test-config-parser.c + +2021-01-20 10:07:56 +0200 Aki Tuomi (686c1f22a0) + + config: Extract sources to libconfig.la + + Makes unit testing possible + +M src/config/Makefile.am + +2021-01-19 11:54:15 +0200 Aki Tuomi (8ab5ea3dd6) + + lib-settings: test-settings - Add tests for settings file + + +M configure.ac +M src/lib-settings/Makefile.am +A src/lib-settings/test-settings.c + +2021-01-18 15:43:06 +0200 Aki Tuomi (dc5600c988) + + test-settings-parser: Add test for size + + +M src/lib-settings/test-settings-parser.c + +2021-01-18 15:32:51 +0200 Aki Tuomi (c064eea80e) + + lib-settings: test-settings-parser - Add test for settings parser + + +M src/lib-settings/test-settings-parser.c + +2021-01-18 14:11:28 +0200 Aki Tuomi (4b0ffe1630) + + lib-settings: Add support for $ENV:name + + Expands into given environment variable + +M src/lib-settings/settings.c + +2020-01-22 14:34:15 +0200 Aki Tuomi (479223dc56) + + config: Add support for $ENV:name + + Expands into given environment variable + +M src/config/config-parser.c + +2020-01-22 14:33:38 +0200 Aki Tuomi (2edc5200f8) + + config: Expand multiple variables per line + + Needed to properly support environment variables. + +M src/config/config-parser.c + +2021-01-20 10:49:23 +0200 Aki Tuomi (9c6bc94d9d) + + config: config-parser - Add config_write_keyvariable + + Move code handling key variable expansion to separate function. Simplifies + next commit. + +M src/config/config-parser.c + +2021-01-12 13:53:19 -0500 Josef 'Jeff' Sipek (18ddfa4eda) + + lib-storage: Make lua methods and functions use the passed in lua_State * + directly + + +M src/lib-storage/mail-user-lua.c +M src/lib-storage/mailbox-lua.c + +2021-01-12 14:27:31 -0500 Josef 'Jeff' Sipek (fd03e3c9a2) + + lib-storage: Make dlua_push_mail() take lua_State * directly + + +M src/lib-storage/mail-lua.c +M src/lib-storage/mail-storage-lua.h + +2021-01-12 14:26:07 -0500 Josef 'Jeff' Sipek (fba66539f2) + + lib-storage: Make dlua_push_mail_user() take lua_State * directly + + +M src/lib-storage/mail-storage-lua.h +M src/lib-storage/mail-user-lua.c +M src/plugins/mail-lua/mail-lua-plugin.c +M src/plugins/push-notification/push-notification-driver-lua.c + +2021-01-12 13:30:45 -0500 Josef 'Jeff' Sipek (8c77a11e89) + + lib-storage: Make lua_storage_cmp() take lua_State * directly + + +M src/lib-storage/mail-storage-lua-private.h +M src/lib-storage/mail-user-lua.c +M src/lib-storage/mailbox-lua.c + +2021-01-12 12:59:39 -0500 Josef 'Jeff' Sipek (9e2ceb472e) + + lib-storage: Make lua_check_storage_mailbox() take lua_State * directly + + +M src/lib-storage/mailbox-lua.c + +2021-01-12 12:02:05 -0500 Josef 'Jeff' Sipek (f15ca44e54) + + lib-storage: Make dlua_push_mailbox() take lua_State * directly + + +M src/lib-storage/mail-lua.c +M src/lib-storage/mail-storage-lua.h +M src/lib-storage/mail-user-lua.c +M src/lib-storage/mailbox-lua.c + +2021-01-07 18:12:27 +0200 Timo Sirainen (7e98d506b0) + + master: Send instance_name setting to log process + + This way log process can use it for syslog ident + +M src/lib-master/master-service-settings.h +M src/master/service-process.c + +2020-12-07 15:58:00 +0200 Timo Sirainen (f1a97bdc3d) + + cassandra: Fix logging messages with LFs + + At least some trace level messages had them. + +M src/lib-sql/driver-cassandra.c + +2020-04-18 12:56:14 +0200 Stephan Bosch (4a7f625eed) + + m4: Fix configuration of libunwind on i386 (and probably other systems). + + Use the standard libunwind-coredump instead of the system-dependent library. + This way, all can be configured using pkg-config, without relying on a + failed attempt to use the $build_cpu variable to find the system-dependent + library. This fails on i386 and probably other systems as well. + +M m4/want_unwind.m4 +M run-test-valgrind.supp + +2020-03-25 16:20:08 +0200 Timo Sirainen (7036a7bfe1) + + lib-imap: imap_bodystructure_write() - Add asserts to check unexpected NULLs + inside lists + + This just changes the assert that already triggers into a bit clearer + assert. + +M src/lib-imap/imap-bodystructure.c + +2020-03-25 15:52:29 +0200 Timo Sirainen (8818482ba6) + + lib-imap: Add unit test for invalid BODYSTRUCTUREs + + +M src/lib-imap/test-imap-bodystructure.c + +2020-03-25 15:52:02 +0200 Timo Sirainen (d749c280bf) + + lib-imap: imap_arg_get/as_nstring() - fail if input is an atom + + Atoms were wrongly allowed in these places. + + These have been used in very few places, so this change should be pretty + safe to do. The only affected places are: + + * SETMETADATA - Backwards compatibility preserved by earlier commit + * ID - It's not expected that any clients use atoms here + * imapc - Server replies are parsed more strictly now + +M src/lib-imap/imap-arg.c +M src/lib-imap/imap-bodystructure.c + +2020-03-25 15:49:37 +0200 Timo Sirainen (dd43103e2a) + + lib-imap: Don't wrongly accept NILs or atoms when parsing BODYSTRUCTURE + + Especially NILs could cause crashes later on when some internal field is + NULL when it's not expectedly to be. + + Fixes a crash when parsing BODYSTRUCTURE and writing it out with + imap_bodystructure_write() when some of the parameter lists contained NILs. + +M src/lib-imap/imap-bodystructure.c + +2020-03-25 15:47:51 +0200 Timo Sirainen (69be6e9a89) + + lib-imap: imap_body_parse_from_bodystructure() - Write size field as atom + + Following changes will break writing it as nstring. + +M src/lib-imap/imap-bodystructure.c + +2020-03-25 16:00:08 +0200 Timo Sirainen (923362d27d) + + imap: SETMETADATA - Explicitly support using atoms for values + + Required to keep atoms working (and especially not assert-crashing) after + the following imap_arg_get_nstring() change. + +M src/imap/cmd-setmetadata.c + +2021-01-20 11:15:18 -0500 Josef 'Jeff' Sipek (429a12a38b) + + lib: event-filter - Implement event_filter_merge() unit test + + +M src/lib/Makefile.am +A src/lib/test-event-filter-merge.c +M src/lib/test-lib.inc + +2021-01-12 11:15:44 -0500 Josef 'Jeff' Sipek (ebb4a80f8e) + + lib: event-filter - Use p_strdup() instead of p_strdup_empty() to avoid + NULLs + + The code used p_strdup_empty() in an (incorrect) attempt to avoid NULLs + turning into empty strings (""). None of the strdup variants do this. + However, p_strdup_empty() converts empty strings to NULLs. This caused a + NULL pointer dereference later on. + +M src/lib/event-filter-parser.y +M src/lib/event-filter.c + +2021-01-21 09:15:10 +0200 Aki Tuomi (9577b94d55) + + lib: test-lib - Free event filters + + Fixes memory leak + + Forgotten from 01ccf687d660331ca3e483c90582156757cebb7f + +M src/lib/test-event-filter-expr.c + +2021-01-19 13:46:13 -0500 Josef 'Jeff' Sipek (01ccf687d6) + + lib: event-filter - Implement filter boolean expression unit tests + + This is a exhaustive test of the boolean operators using field equality + comparisons. This test code focuses on the boolean operators (AND, OR, NOT) + and not on the comparison operators (=, <, >, <=, and >=) and their + arguments (event names, source locations, categories). + +M src/lib/Makefile.am +A src/lib/test-event-filter-expr.c +M src/lib/test-lib.inc + +2021-01-19 13:42:17 -0500 Josef 'Jeff' Sipek (7843020071) + + lib: event-filter - Correct a comment referring to old filter syntax + + +M src/lib/event-filter.c + +2021-01-19 13:41:45 -0500 Josef 'Jeff' Sipek (ae60143ac7) + + lib: event-filter - Add a helper function to get at the filter's boolean + expression + + This is necessary for the soon-to-be-implemented unit tests. + +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-01-19 13:40:17 -0500 Josef 'Jeff' Sipek (586b2386e4) + + lib: event-filter - Expose internal functions to allow for unit testing + + We'll need these to avoid code duplication when unit testing the boolean + expression evaluation logic. + +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2021-01-04 12:01:28 -0500 Josef 'Jeff' Sipek (abe9c7585d) + + lib: event-filter - Make NOT operator right associative and higher + precedence + + For example, consider the filter: + + event=* AND + NOT event=foo AND + NOT event=bar AND + NOT event=baz + + The "NOT" operator is supposed to be bound to the comparisons to the + immediate right. That is, it supposed to be equivalent to: + + event=* AND + (NOT event=foo) AND + (NOT event=bar) AND + (NOT event=baz) + + Both of these should produce the following parse tree: + + AND + AND + AND + EQ EVENT '*' + NOT + EQ EVENT 'foo' + NOT + EQ EVENT 'bar' + NOT + EQ EVENT 'baz' + + Instead, before this commit, the NOTs were getting bound to the entire + sub-expression to the right. Therefore, the original filter expression was + being parsed as if it were: + + event=* AND + NOT (event=foo AND + NOT (event=bar AND + NOT event=baz)) + + Which produced the following parse tree: + + AND + EQ EVENT '*' + NOT + AND + EQ EVENT 'foo' + NOT + AND + EQ EVENT 'bar' + NOT + EQ EVENT 'baz' + +M src/lib/event-filter-parser.y + +2021-01-14 20:31:18 +0100 Philippe Antoine (709727324b) + + lib-test: fuzzer - Don't crash in targets without ioloop + + +M src/lib-test/fuzzer.c + +2021-01-18 17:53:36 +0100 Timo Sirainen (93652abc5f) + + auth: Makefile.am - Use $(LIBDOVECOT_LUA) instead of redefining it + + +M src/auth/Makefile.am + +2021-01-18 17:53:07 +0100 Timo Sirainen (4d610d1664) + + auth: Fix building built-in lua + + It was working only when building as plugin. + +M src/auth/Makefile.am + +2021-01-18 13:46:55 +0100 Timo Sirainen (77702eda2b) + + lib: test-buffer - Fix memory leak errors in fatal buffer tests + + +M src/lib/test-buffer.c + +2021-01-18 13:46:46 +0100 Timo Sirainen (45c915ec94) + + lib-test: Add test_fatal_set_callback() + + +M src/lib-test/test-common.c +M src/lib-test/test-common.h + +2021-01-18 11:38:04 +0200 Aki Tuomi (2c84623c0a) + + lib-master: test-event-stats - Add test for large event id + + Ensure UPDATE command syntax is correct when event id is over 1 million + +M src/lib-master/test-event-stats.c + +2020-12-21 10:45:32 +0000 Siavash Tavakoli (141766b24f) + + indexer: Remove worker-specific request queue + + - Each request is done in a single connection and indexer master disconnects + from worker after indexing job is complete. + - No need to keep a worker queue since it always have length of 1. Instead, + keep a pointer to indexer_request for each worker connection. + - If indexing is in progress for a user, don't try to use the same + connection when a new request arrives for the same user. Instead, move the + request to the back of the queue and wait for the in progress request to + finish then create a new connection and submit request to worker. + +M src/indexer/indexer-queue.c +M src/indexer/indexer-queue.h +M src/indexer/indexer.c +M src/indexer/worker-connection.c +M src/indexer/worker-connection.h + +2020-12-20 19:45:09 +0000 Siavash Tavakoli (9466769ab6) + + indexer: Cleanup idle_list from worker pool + + - Indexer always disconnects from worker process, no need to keep a list of + idle processes. + - The callback already calls worker_pool_release_connection every time + worker updated percentage. Defer disconnecting from working to the callback. + It checks if the request is completed and destroys connection. + +M src/indexer/worker-connection.c +M src/indexer/worker-pool.c + +2020-12-14 21:39:39 +0000 Siavash Tavakoli (1e8fc75ecf) + + indexer: Disconnect from indexer-worker after each request + + This allows indexer-worker to properly handle service configurations such as + service_count and idle_kill time. + +M src/indexer/indexer-worker.c +M src/indexer/master-connection.c +M src/indexer/master-connection.h +M src/indexer/worker-connection.c + +2020-05-20 11:18:48 +0300 Timo Sirainen (0732cea98a) + + lib: array - Make sure it assert-crashes if trying to add more than UINT_MAX + elements + + This is required, because array_count() returns unsigned int. + +M src/lib/array.h +M src/lib/test-array.c + +2020-05-20 11:16:29 +0300 Timo Sirainen (024d6f96b8) + + lib: Add buffer_create_dynamic_max() + + +M src/lib/buffer.c +M src/lib/buffer.h +M src/lib/test-buffer.c +M src/lib/test-lib.inc + +2020-05-20 13:42:22 +0300 Timo Sirainen (d4ceac0f2a) + + lib: hash - Add assert to make sure hash table doesn't grow beyond UINT_MAX + nodes + + hash_table_count() returns unsigned int, so the node count can't be larger. + It's internally also tracked as unsigned int currently. It should be large + enough for all practical use cases. + +M src/lib/hash.c + +2020-12-17 17:48:37 -0500 Josef 'Jeff' Sipek (0da82cff36) + + auth: db-lua - Deref script in auth_lua_call_userdb_iterate_init() only once + + +M src/auth/db-lua.c + +2020-12-17 17:47:57 -0500 Josef 'Jeff' Sipek (650edc28f3) + + auth: db-lua - Deref script in auth_lua_call_userdb_lookup() only once + + +M src/auth/db-lua.c + +2020-12-17 17:47:03 -0500 Josef 'Jeff' Sipek (05a9dab949) + + auth: db-lua - Deref script in auth_lua_call_passdb_lookup() only once + + +M src/auth/db-lua.c + +2020-12-17 17:46:20 -0500 Josef 'Jeff' Sipek (724a9e18b1) + + auth: db-lua - Deref script in auth_lua_call_password_verify() only once + + +M src/auth/db-lua.c + +2020-12-17 17:44:16 -0500 Josef 'Jeff' Sipek (d556f2f4fe) + + auth: db-lua - Make auth_lua_dovecot_auth_register() take lua_State * + directly + + +M src/auth/db-lua.c + +2020-12-17 17:43:36 -0500 Josef 'Jeff' Sipek (1e85955b59) + + auth: db-lua - Make auth_lua_auth_request_register() take lua_State * + directly + + +M src/auth/db-lua.c + +2020-12-17 17:39:24 -0500 Josef 'Jeff' Sipek (4ea5c4ab95) + + auth: db-lua - Make auth_lua_call_lookup_finish() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 17:37:10 -0500 Josef 'Jeff' Sipek (5b48410b0f) + + auth: db-lua - Make auth_lua_export_passdb_table() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 17:35:21 -0500 Josef 'Jeff' Sipek (cf40467e30) + + auth: db-lua - Make auth_lua_call_lookup() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 17:32:50 -0500 Josef 'Jeff' Sipek (38fcb7885e) + + auth: db-lua - Make auth_lua_export_userdb_table() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 17:31:59 -0500 Josef 'Jeff' Sipek (86c185ed0c) + + auth: db-lua - Make auth_lua_export_table() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 17:30:38 -0500 Josef 'Jeff' Sipek (74a77410f1) + + auth: db-lua - Make auth_lua_push_auth_request() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 16:53:08 -0500 Josef 'Jeff' Sipek (4114a88fc2) + + auth: db-lua - Make lua methods and functions use the passed in lua_State * + directly + + +M src/auth/db-lua.c + +2020-12-17 16:50:50 -0500 Josef 'Jeff' Sipek (e2e7790dd5) + + auth: db-lua - Make auth_lua_check_auth_request() take lua_State * directly + + +M src/auth/db-lua.c + +2020-12-17 16:43:19 -0500 Josef 'Jeff' Sipek (4a1e9db35e) + + lib-lua: Use dlua_register() + + +M src/lib-lua/test-lua.c + +2020-12-17 16:41:21 -0500 Josef 'Jeff' Sipek (31570c8b44) + + lib-lua: Add dlua_register() + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c + +2020-12-16 19:54:10 -0500 Josef 'Jeff' Sipek (d62387e4d2) + + lib-storage: Make lua methods and functions use the passed in lua_State * + directly + + +M src/lib-storage/mail-lua.c +M src/lib-storage/mail-user-lua.c + +2020-12-16 20:01:30 -0500 Josef 'Jeff' Sipek (56c07b8e2d) + + lib-storage: Make lua_storage_mail_user_set_metadata_unset() take lua_State + * directly + + +M src/lib-storage/mail-user-lua.c + +2020-12-16 19:59:13 -0500 Josef 'Jeff' Sipek (bee28ca65e) + + lib-storage: Make lua_check_storage_mail_user() take lua_State * directly + + +M src/lib-storage/mail-user-lua.c + +2020-12-16 19:51:57 -0500 Josef 'Jeff' Sipek (57bfc584f6) + + lib-storage: Make lua_check_storage_mail() take lua_State * directly + + +M src/lib-storage/mail-lua.c + +2020-12-17 13:07:52 -0500 Josef 'Jeff' Sipek (451be24cb2) + + lib-lua: Make dlua_dump_stack() take lua_State * directly + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c + +2020-12-17 13:06:57 -0500 Josef 'Jeff' Sipek (8ec0595125) + + lib-lua: Move dlua_dump_stack() prototype to private header + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.h + +2020-12-17 13:00:10 -0500 Josef 'Jeff' Sipek (b693164bc7) + + lib-lua: Make dlua_check_event() take lua_State * directly + + +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-script-private.h + +2020-12-17 13:00:00 -0500 Josef 'Jeff' Sipek (072e385983) + + lib-lua: Make dlua_push_event() take lua_State * directly + + +M src/auth/db-lua.c +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-script-private.h + +2020-12-17 12:57:26 -0500 Josef 'Jeff' Sipek (5999db7250) + + lib-lua: Move dlua_{check,push}_event() prototypes to private header + + +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.h + +2020-12-17 12:55:25 -0500 Josef 'Jeff' Sipek (79e5cb9496) + + lib-lua: Make dlua_getdovecot() take lua_State * directly + + +M src/auth/db-lua.c +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-script-private.h +M src/lib-storage/mail-storage-lua.c + +2020-12-17 12:53:44 -0500 Josef 'Jeff' Sipek (c753146df2) + + lib-lua: Make dlua_setmembers() take lua_State * directly + + +M src/auth/db-lua.c +M src/lib-lua/dlua-script-private.h +M src/lib-lua/dlua-script.c +M src/lib-storage/mail-storage-lua.c + +2020-12-16 19:23:13 -0500 Josef 'Jeff' Sipek (b093dd2ba1) + + lib-lua: Make lua methods and functions use the passed in lua_State * + directly + + +M src/lib-lua/dlua-dovecot.c + +2020-12-16 19:33:55 -0500 Josef 'Jeff' Sipek (baf231eb0e) + + lib-lua: Make dlua_push_event_passthrough() take lua_State * directly + + +M src/lib-lua/dlua-dovecot.c + +2020-12-16 19:32:19 -0500 Josef 'Jeff' Sipek (33aac3bd10) + + lib-lua: Make dlua_check_event_passthrough() take lua_State * directly + + +M src/lib-lua/dlua-dovecot.c + +2020-12-16 19:18:33 -0500 Josef 'Jeff' Sipek (fca6435452) + + lib-lua: Make dlua_event_log() take lua_State * directly + + +M src/lib-lua/dlua-dovecot.c + +2020-12-16 19:16:44 -0500 Josef 'Jeff' Sipek (f41f7aa669) + + lib-lua: Make dlua_get_file_line() take lua_State * directly + + +M src/lib-lua/dlua-dovecot.c + +2020-12-16 19:05:04 -0500 Josef 'Jeff' Sipek (2e60aba389) + + lib-lua: Make DLUA_REQUIRE_ARGS*() take the lua_State * directly + + This is the first in a series of commits that convert a number of functions + to pass around the lua_State pointer directly and to use it instead of using + the lua_State pointed to by the struct dlua_script. + + This change is needed to eventually support the 'yield' functionality and + "sequential looking, but async behind the scenes" lua scripts. To support + this, the C code needs to instantiate multiple lua_States and then operate + on the correct one - whichever one is passed back by the lua runtime. This + lays the ground work for that. + +M src/lib-lua/dlua-dovecot.c +M src/lib-lua/dlua-script-private.h +M src/lib-storage/mail-lua.c +M src/lib-storage/mail-user-lua.c +M src/lib-storage/mailbox-lua.c + +2021-01-13 12:54:09 +0200 Timo Sirainen (dbcd7610b5) + + imap: test-imap-client-hibernate - Remove dead assignment + + +M src/imap/test-imap-client-hibernate.c + +2020-10-09 21:07:40 +0200 Geert Hendrickx (f8ac63a3f2) + + util: dovecot-sysreport: Use "uname -n" instead of "hostname" for + portability + + hostname is not defined by POSIX, so not guaranteed to work. + +M src/util/dovecot-sysreport + +2020-12-23 12:50:33 +0000 Siavash Tavakoli (cf887a3250) + + lib-mail: mail-html2text: HTML entity lookup must be case-sensitive + + HTML entities are case-sensitive. + +M src/lib-mail/mail-html2text.c + +2020-01-30 13:50:30 +0200 Timo Sirainen (15fd25955e) + + lib-storage: Add unit test for mailbox-list error handling + + This is exactly the same test as what mail-storage has for its error + handling. + +M src/lib-storage/Makefile.am +M src/lib-storage/test-mail-storage.c +A src/lib-storage/test-mailbox-list.c + +2020-02-22 12:01:45 +0200 Timo Sirainen (369be49d06) + + lib-storage: test-mail-storage - Split overlong lines + + +M src/lib-storage/test-mail-storage.c + +2020-01-30 13:48:26 +0200 Timo Sirainen (6e0031ebf4) + + lib-storage: Change mailbox_list_set_error/critical() to work the same as + storage's + + The storage ones had various fixes to different situations. Just make the + mailbox list ones exactly the same to get the same fixes. + +M src/lib-storage/mailbox-list.c + +2020-01-24 13:50:50 +0200 Timo Sirainen (dde65e0ec9) + + lib-storage: mailbox_list_get_last_error() - Handle unexpected situations + better + + Change the logic to be similar as in mail_storage_get_last_error() if the + mail_error or error_string unexpectedly isn't set. + +M src/lib-storage/mailbox-list.c + +2020-10-22 22:49:56 +0300 Timo Sirainen (4735c12bb1) + + lib-storage: Detect corrupted mail size when calculating body size + + When body size is calculated from message size - header size, make sure that + the message size is at least as large as the header size. Otherwise treat + the message size as corrupted. + +M src/lib-storage/index/index-mail.c + +2020-11-22 19:16:03 +0000 Siavash Tavakoli (6d9008af1d) + + stats: openmetrics: Do not duplicate counter and duration metrics for + histograms + + Histograms generate "_count" and "_sum" metrics either for each quantile or + for the whole distribution. This patch prevents creating a duplicate metric + with type counter which results in metric name collision. + +M src/stats/stats-service-openmetrics.c + +2020-11-23 18:22:22 +0000 Manuel Rüger (ae678116a7) + + stats: Make exported metrics compliant with OpenMetrics standards + + Commit based on github PR: https://github.com/dovecot/core/pull/136 + + Fix issues raised by promtool and prometheus client library parser. Cleanup + and code fixes by Siavash Tavakoli. + +M src/stats/stats-service-openmetrics.c + +2020-12-22 13:23:45 +0200 Timo Sirainen (c98cf39bac) + + indexer, auth: Set indexer-worker and auth-worker services' type=worker + + +M src/auth/auth-settings.c +M src/indexer/indexer-worker-settings.c + +2020-12-21 21:24:50 +0200 Timo Sirainen (58aa56e033) + + lib-master, master: Add "worker" service type + + The worker services are expected to reach their process_limit regularly. + There shouldn't be a warning logged about temporarily reaching the limit, + since it can happen due to race conditions. + +M src/lib-master/service-settings.h +M src/master/master-settings.c +M src/master/service-monitor.c +M src/master/service-process.c +M src/master/service.h + +2020-12-21 21:23:32 +0200 Timo Sirainen (0a2428d9b1) + + master: Split off service_log_drop_warning() + + +M src/master/service-monitor.c + +2020-01-16 15:03:28 +0200 Timo Sirainen (6a267b61a6) + + master: Update comment to service_process.total_count + + It's not an exact value. Making it exact would require changing the IPC + protocol to master, which isn't worth it just for this. + +M src/master/service-process.h + +2020-01-16 14:58:21 +0200 Timo Sirainen (b95a60b44e) + + lib-master: Notify master immediately when process can accept more clients + + Instead of delaying it for 1 second. Otherwise the master might be + complaining about process/client limit being reached or creating more + processes unnecessarily. + +M src/lib-master/master-service.c + +2020-12-28 10:26:07 +0000 Siavash Tavakoli (96cae05285) + + lib-mail: message-snippet: Fix expected number of leading non-whitespace + chars + + If message body starts with a single char + space (e.g. "I am"), the space + is wrongly removed (i.e. snippet would be "Iam") because at least two + non-whitespace characters are expected. Fix the minimum to 1 to fix this. + +M src/lib-mail/message-snippet.c +M src/lib-mail/test-message-snippet.c + +2021-01-07 14:57:23 +0200 Aki Tuomi (225e2e040c) + + auth: Log failure before freeing up request + + The request got free'd before logging, causing use-after-free access. + + Broken in cec5a9c92d094d639c49bb83eeb9383ebb231c6f + +M src/auth/auth-request.c + +2020-12-09 01:31:30 +0000 Siavash Tavakoli (58668e1611) + + imap: cmd-setmetadata: Do not open mailbox + + Set metadata without actually opening the mailbox. + + As a side-effect this changes SETMETADATA command response when ACL rules + are present and user only has lookup right. For non-existing mailboxes, + command fails with "Mailbox doesn't exist" message instead of + "Permission denied" error. + +M src/imap/cmd-setmetadata.c + +2020-12-01 17:21:03 +0000 Siavash Tavakoli (51b5b63b75) + + imap: cmd-getmetadata: Retrieve metadata values without opening the mailbox + + No need to actually opening the mailbox, only check for its existence. This + also makes GETMETADATA command behave more in line with RFC 5464 when acls + are preset. Changes to command results for different cases: + + - User with only "l" right: + - for non-existing mailbox command failure error changed from "Permission + denied" + to "Mailbox doesn't exist" + - User with "l" right and one of "s", "w", "i", and "p" rights: + - for INBOX, command result changed from "Permission denied" failure to + "OK" + - for existing mailboxes, command result changed from "Permission denied" + failure to "OK" + - for non-existing mailboxes, command failure error changed from + "Permission denied" + to "Mailbox doesn't exist" + - for autocreated mailboxes, command result changed from "Permission + denied" + failure to "OK" + - User with "l" right and one of "x", "c", "d", and "a" rights: + - for non-existing mailboxes, command failure error changed from + "Permission denied" + to "Mailbox doesn't exist" + - User with only "r" right: + - for INBOX, command result changed from "OK" to "Mailbox doesn't exist" + - for existing mailboxes, command result changed from "OK" to "Mailbox + doesn't exist" + - for autocreated mailboxes, command result changed from "OK" to "Mailbox + doesn't exist" + +M src/imap/cmd-getmetadata.c + +2020-12-09 01:08:30 +0000 Siavash Tavakoli (f096b20f6f) + + imap: cmd-getmetadata: Do not ignore NOTFOUND and PERM when handling errors + + Don't ignore MAIL_ERROR_NOTFOUND MAIL_ERROR_PERM in + cmd_getmetadata_handle_error and fail GETMETADATA command properly. This + code was added in the initial GETMETADATA implementation commit. It doesn't + seem like it has ever done anything useful. + +M src/imap/cmd-getmetadata.c + +2020-12-01 17:23:31 +0000 Siavash Tavakoli (466bf85d64) + + doveadm mailbox metadata: Don't open mailbox for get and list commands + + +M src/doveadm/doveadm-mail-mailbox-metadata.c + +2020-12-16 10:08:11 +0000 Siavash Tavakoli (9dc72c3091) + + lib-storage: Move checking autocreated boxes to storage backends + + This allows acl plugin to check ACLs for autocreated mailboxes as well. + +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/index-storage.c +M src/lib-storage/index/maildir/maildir-storage.c +M src/lib-storage/index/pop3c/pop3c-storage.c +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/mail-storage.c + +2020-12-09 00:58:17 +0000 Siavash Tavakoli (2eec12bb32) + + lib-storage: index-attribute: Fix typo + + +M src/lib-storage/index/index-attribute.c + +2020-12-01 10:11:40 +0000 Siavash Tavakoli (2cbc917523) + + doveadm: doveadm-mail-mailbox-metadata: Add flag for prefixes in metadata + list + + Add an optional "-p" flag for metadata list command. Keys should have been + listed with "/private" or "/shared" prefixes from the get-go but for the + sake of not breaking users' workflow put this behind a flag. + +M src/doveadm/doveadm-mail-mailbox-metadata.c + +2020-12-16 16:50:43 +0200 Timo Sirainen (0eb35dc578) + + lib-mail: test-message-search - Avoid static analyzer warnings about NULL + pointers + + +M src/lib-mail/test-message-search.c + +2020-12-16 16:47:38 +0200 Timo Sirainen (41056265f7) + + dsync: Add assert to help static analyzers + + +M src/doveadm/dsync/dsync-mailbox-import.c + +2020-12-16 16:21:40 +0200 Timo Sirainen (46df1de0ec) + + cassandra: Fix error handling on SSL initialization failure + + +M src/lib-sql/driver-cassandra.c + +2021-01-11 11:04:57 +0200 Aki Tuomi (daa7f7d285) + + lib: istream-file,ostream-file - Mark close failure as unlikely + + File descriptor close failure is unlikely to happen. + +M src/lib/istream-file.c +M src/lib/ostream-file.c + +2020-12-21 11:51:36 +0200 Aki Tuomi (09a41a815b) + + lib: istream-file,ostream-file - Ignore ECONNRESET + + This happens e.g. on FreeBSD when closing a socket that has not been fully + flushed to client. Since we can't do anything about that, we might as well + just ignore it. + +M src/lib/istream-file.c +M src/lib/ostream-file.c + +2020-12-21 11:50:51 +0200 Aki Tuomi (921bb0008a) + + lib: fd-util - Ignore ECONNRESET when closing fd + + This happens e.g. on FreeBSD when closing a socket that has not been fully + flushed to client. Since we can't do anything about that, we might as well + just ignore it. + +M src/lib/fd-util.c + +2020-12-17 09:21:38 -0500 Josef 'Jeff' Sipek (d14330716a) + + lib-lua: Log an error when lua deinit function failed + + +M src/lib-lua/dlua-script.c + +2020-12-11 14:43:17 -0500 Josef 'Jeff' Sipek (3ef9218202) + + lib-lua: Move init/deinit function invocation into helper functions + + This moves them out of the way and keeps them close to each other. + +M src/lib-lua/dlua-script.c + +2020-12-10 16:22:20 -0500 Josef 'Jeff' Sipek (b95b0f34f7) + + lib-lua: Warn if threading was detected + + +M src/lib-lua/dlua-script.c + +2020-09-24 09:22:38 +0300 Aki Tuomi (64cd461ab6) + + lib-lua: Store script pointer in LUA_REGISTRY + + This will allow us to translate any lua thread to a script pointer. This is + not meant to allow multi-threaded lua scripts, but it is necessary to allow + yields to work. + +M src/lib-lua/dlua-script.c + +2020-12-30 10:05:17 +0000 Siavash Tavakoli (3ad00b770a) + + imap-hibernate: Add variable aliases + + Accept new aliases "local_ip" (="lip") and "remote_ip" (="rip") when + expanding variables. + +M src/imap-hibernate/imap-client.c + +2020-12-30 10:02:56 +0000 Siavash Tavakoli (754d5017a2) + + login-storage: Add variable aliases + + Accept new aliases "local_ip" (="lip") and "remote_ip" (="rip") when + expanding variables. + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-user.c + +2020-12-30 10:00:43 +0000 Siavash Tavakoli (ef0d9b1945) + + login-common: Add variable aliases + + Accept new aliases such as "local_ip" (="lip") and "original_user" + (="orig_user"), etc. + +M src/login-common/client-common.c +M src/login-common/login-settings.c + +2020-12-29 11:18:32 +0200 Aki Tuomi (daea0c1078) + + .gitignore: Ignore fuzzers + + +M .gitignore + +2020-12-29 11:19:38 +0200 Aki Tuomi (171f2af20e) + + lib-imap: Add fuzz-imap-bodystructure + + +M src/lib-imap/Makefile.am +A src/lib-imap/fuzz-imap-bodystructure.c + +2020-09-11 15:02:57 +0300 Aki Tuomi (ec11aedaef) + + lib-mail: Add fuzz-message-parser + + Fuzzer for message parser + +M src/lib-mail/Makefile.am +A src/lib-mail/fuzz-message-parser.c + +2020-09-11 15:02:17 +0300 Aki Tuomi (d1bfe5ff51) + + AUTHORS: Add catena cyber + + +M AUTHORS + +2020-03-20 16:00:21 +0100 Philippe Antoine (9622c5646a) + + lib-smtp: Add fuzz target for smtp server + + +M src/lib-smtp/Makefile.am +A src/lib-smtp/fuzz-smtp-server.c + +2020-03-23 18:33:18 +0200 Timo Sirainen (62a53d17e7) + + lib-imap: Add fuzz-imap-utf7 + + +M src/lib-imap/Makefile.am +A src/lib-imap/fuzz-imap-utf7.c + +2020-03-23 18:29:16 +0200 Timo Sirainen (48114f39d8) + + lib-test: Add fuzzing framework + + +M src/lib-test/Makefile.am +A src/lib-test/fuzzer.c +A src/lib-test/fuzzer.h + +2020-03-23 18:28:34 +0200 Timo Sirainen (715d3aca5a) + + configure: Add --with-fuzzer=clang to use clang fuzzer + + +M configure.ac +M m4/dovecot.m4 + +2020-11-18 21:22:45 +0200 Timo Sirainen (a912198bdc) + + lib-imap: Fix writing BODYSTRUCTURE for truncated multipart/digest part + + Fixes error while parsing BODYSTRUCTURE: message_part message/rfc822 flag + doesn't match lines in BODYSTRUCTURE + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2020-11-18 20:48:11 +0200 Timo Sirainen (ec2c5ffde7) + + lib-imap: Fix writing BODYSTRUCTURE for truncated multipart/ part + + If the max nesting limit is reached, write the last part out as + application/octet-stream. The original content-type could be confusing IMAP + clients when they don't see any child parts. + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2020-11-18 18:55:34 +0200 Timo Sirainen (530c1e950a) + + lib-imap: Fix writing BODYSTRUCTURE for truncated message/rfc822 part + + If the max nesting limit is reached, write the last part out as + application/octet-stream instead of dummy message/rfc822. + + Fixes error while parsing BODYSTRUCTURE: message_part message/rfc822 flag + doesn't match BODYSTRUCTURE + +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/test-imap-bodystructure.c + +2020-12-12 17:39:54 +0200 Aki Tuomi (93ce6ac94e) + + NEWS: Add news for 2.3.13 + + +M NEWS + +2020-09-11 10:57:51 +0300 Timo Sirainen (266e54b7b8) + + lib-imap: Don't generate invalid BODYSTRUCTURE when reaching MIME part limit + + If the last MIME part was message/rfc822 and its child was truncated away, + BODYSTRUCTURE was missing the ENVELOPE and BODY[STRUCTURE] parts. Fixed by + writing empty dummy ones. + +M src/lib-imap/imap-bodystructure.c + +2020-09-11 09:53:03 +0300 Timo Sirainen (fb97a1cddb) + + lib-mail: message-parser - Fix assert-crash when enforcing MIME part limit + + The limit could have been exceeded with message/rfc822 parts. + +M src/lib-mail/message-parser.c +M src/lib-mail/test-message-parser.c + +2020-08-24 19:12:21 +0300 Timo Sirainen (f8114a20e4) + + imap: Add unit test for imap-client-hibernate + + +M src/imap/Makefile.am +A src/imap/test-imap-client-hibernate.c + +2020-08-24 19:10:43 +0300 Timo Sirainen (1a27cfa8e3) + + imap: imap_client_hibernate() - Return reason string on failure + + This helps writing a unit test for it. + +M src/imap/cmd-idle.c +M src/imap/imap-client-hibernate.c +M src/imap/imap-client.h + +2020-08-24 19:10:10 +0300 Timo Sirainen (c7d158681f) + + imap: Delay initializing client IO until client_create_finish() + + This helps writing unit tests. + +M src/imap/imap-client.c + +2020-08-24 16:58:16 +0300 Timo Sirainen (73937b5fe7) + + imap: Fix crash if imap-hibernate socket can't be connected to + + The error was supposed to be returned to caller, not logged directly. + +M src/imap/imap-client-hibernate.c + +2020-08-17 18:33:20 +0300 Timo Sirainen (68165c8acc) + + imap: Escape tag when sending it to imap-hibernate process + + +M src/imap/imap-client-hibernate.c + +2020-08-17 18:26:01 +0300 Timo Sirainen (7a70f01fe8) + + lib-imap: Add imap_parser_client_read_tag() + + +M src/lib-imap/imap-parser.c +M src/lib-imap/imap-parser.h + +2020-08-17 18:22:42 +0300 Timo Sirainen (9d3ecff3de) + + imap-login: Use imap_parser_read_tag() and _read_command_name() + + +M src/imap-login/imap-login-client.c + +2020-08-17 18:15:35 +0300 Timo Sirainen (62061e8cf6) + + imap-login: Split off client_invalid_command() + + +M src/imap-login/imap-login-client.c + +2020-08-17 18:11:36 +0300 Timo Sirainen (0386140f61) + + imap: Use imap_parser_read_tag() and _read_command_name() + + +M src/imap/imap-client.c + +2020-08-17 17:59:19 +0300 Timo Sirainen (eea57c8683) + + imap: Split off client_command_failed_early() + + +M src/imap/imap-client.c + +2020-08-17 17:32:11 +0300 Timo Sirainen (b9a2f18466) + + lib-imap: Add imap_parser_read_tag() and _read_command_name() + + +M src/lib-imap/imap-parser.c +M src/lib-imap/imap-parser.h +M src/lib-imap/test-imap-parser.c + +2020-03-11 14:36:10 +0200 Timo Sirainen (6862dfcab9) + + lib-master: Add 5 second timeout when waiting for stats-writer handshake + + Previously the wait was infinite and nothing was logged, making it difficult + to know that the problem is with a hanging stats process. + +M src/lib-master/stats-client.c + +2020-12-22 10:22:38 +0200 Timo Sirainen (941668f5a0) + + lib-master, stats: Fix sending and parsing UPDATE commands + + These commands were parsed completely wrong, resulting in errors like: + + Client sent invalid input for UPDATE: Invalid tv_created: Invalid timeval + microseconds parameter + +M src/lib-master/stats-client.c +M src/lib-master/test-event-stats.c +M src/stats/client-writer.c + +2020-12-03 10:21:47 -0500 Josef 'Jeff' Sipek (4a07b3622a) + + lib-lua: Install libdovecot-lua binaries + + This turns this into a full-fledged library. This addresses the issue where + libdovecot-lua is completely included in anything that uses it, which caused + unnecessarily bloat and could have caused linker problems with multiple + definitions of the same symbol. + +M src/auth/Makefile.am +M src/lib-lua/Makefile.am + +2020-12-01 12:16:04 -0500 Josef 'Jeff' Sipek (ba7b64712e) + + lib-storage: Split off the mail user lua code + + Move the code into a separate file to mirror the native C code layout. + +M src/lib-storage/Makefile.am +M src/lib-storage/mail-storage-lua-private.h +M src/lib-storage/mail-storage-lua.c +A src/lib-storage/mail-user-lua.c + +2020-12-01 12:13:31 -0500 Josef 'Jeff' Sipek (53e62982d3) + + lib-storage: Split off the mailbox attribute lua code + + Move the code into a separate file to mirror the native C code layout. + +M src/lib-storage/Makefile.am +M src/lib-storage/mail-storage-lua.c +A src/lib-storage/mailbox-attribute-lua.c + +2020-12-01 12:05:59 -0500 Josef 'Jeff' Sipek (fcbf6da47f) + + lib-storage: Split off the struct mailbox lua code + + Move the code into a separate file to mirror the native C code layout. + +M src/lib-storage/Makefile.am +M src/lib-storage/mail-storage-lua-private.h +M src/lib-storage/mail-storage-lua.c +A src/lib-storage/mailbox-lua.c + +2020-12-01 11:47:26 -0500 Josef 'Jeff' Sipek (bf42611743) + + lib-storage: Split off the struct mail lua code + + Move the code into a separate file to mirror the native C code layout. + +M src/lib-storage/Makefile.am +A src/lib-storage/mail-lua.c +A src/lib-storage/mail-storage-lua-private.h +M src/lib-storage/mail-storage-lua.c + +2020-12-01 11:14:02 -0500 Josef 'Jeff' Sipek (bf1c270fa3) + + lib-storage: Move storage related lua code into libdovecot-storage-lua.la + + This keeps all the storage code in one place. + +M src/lib-storage/Makefile.am +R100 src/plugins/mail-lua/mail-storage-lua.c src/lib-storage/mail-storage-lua.c +R100 src/plugins/mail-lua/mail-storage-lua.h src/lib-storage/mail-storage-lua.h +M src/plugins/mail-lua/Makefile.am + +2020-11-16 20:55:14 +0100 Marvin W (2c57a92661) + + auth: db-lua - Fix invalid stack empty check + + 3e11b97 introduced assertions to ensure the lua stack is empty after + execution. In auth_lua_call_password_verify() this check was inserted + *before* popping the error message from the stack, ultimately causing the + assertion to fail every time the lua script has a runtime error, leading to + process crashing. + +M src/auth/db-lua.c + +2020-03-06 15:45:47 +0200 Josef 'Jeff' Sipek (0113cf0012) + + lib-storage: Remove cydir storage format support + + +M configure.ac +M src/lib-storage/Makefile.am +M src/lib-storage/index/Makefile.am +D src/lib-storage/index/cydir/Makefile.am +D src/lib-storage/index/cydir/cydir-mail.c +D src/lib-storage/index/cydir/cydir-save.c +D src/lib-storage/index/cydir/cydir-storage.c +D src/lib-storage/index/cydir/cydir-storage.h +D src/lib-storage/index/cydir/cydir-sync.c +D src/lib-storage/index/cydir/cydir-sync.h +M src/lib-storage/mail-storage-register.c + +2019-10-11 14:53:26 +0300 Timo Sirainen (5dc69d900a) + + lib-storage: Fix potential assert-crash fetching BODY[STRUCTURE] when mail's + size is cached wrong + + This happened only after mail's size was detected to be different than the + mail's cached size. + + Fixes: Panic: file index-mail.c: line 1140 (index_mail_parse_body_finish): + assertion failed: (mail->data.parts != NULL) + +M src/lib-storage/index/index-mail.c + +2020-12-09 09:42:19 -0500 Josef 'Jeff' Sipek (727f9adc5c) + + plugins: Remove expire plugin + + The autoexpunge functionality should be used instead. + +M configure.ac +M doc/example-config/dovecot-dict-sql.conf.ext +M doc/example-config/dovecot.conf +M src/plugins/Makefile.am +D src/plugins/expire/Makefile.am +D src/plugins/expire/doveadm-expire.c +D src/plugins/expire/expire-plugin.c +D src/plugins/expire/expire-plugin.h +D src/plugins/expire/expire-set.c +D src/plugins/expire/expire-set.h + +2020-12-09 09:20:54 -0500 Josef 'Jeff' Sipek (26a6a90baf) + + plugins: Remove mail-filter plugin + + +M configure.ac +M src/plugins/Makefile.am +D src/plugins/mail-filter/Makefile.am +D src/plugins/mail-filter/istream-ext-filter.c +D src/plugins/mail-filter/istream-ext-filter.h +D src/plugins/mail-filter/mail-filter-plugin.c +D src/plugins/mail-filter/mail-filter-plugin.h +D src/plugins/mail-filter/ostream-ext-filter.c +D src/plugins/mail-filter/ostream-ext-filter.h + +2020-12-09 09:32:29 -0500 Josef 'Jeff' Sipek (a02076a2c0) + + plugins: Remove snarf plugin + + +M configure.ac +M src/plugins/Makefile.am +D src/plugins/snarf/Makefile.am +D src/plugins/snarf/snarf-plugin.c +D src/plugins/snarf/snarf-plugin.h + +2020-12-09 09:50:10 -0500 Josef 'Jeff' Sipek (9d48f0dd05) + + plugins: Remove autocreate plugin + + Automatic mailbox creation should be done via the autocreate namespace + option. + +M configure.ac +M src/plugins/Makefile.am +D src/plugins/autocreate/Makefile.am +D src/plugins/autocreate/autocreate-plugin.c +D src/plugins/autocreate/autocreate-plugin.h + +2020-12-11 11:05:50 -0500 Josef 'Jeff' Sipek (4d731ccc49) + + lib-lua: Stop sharing lua states based on the script file name + + Instead of all instances of the same lua script sharing the same stack and + globals, make them completely separate instances. Removing this + optimization will make support of yielding possible. + +M src/lib-lua/dlua-script.c + +2020-12-11 11:22:44 -0500 Josef 'Jeff' Sipek (c9f42ff404) + + lib-lua: Use lua_register() instead of open-coding it + + +M src/lib-lua/test-lua.c + +2020-07-29 11:28:50 +0300 Aki Tuomi (89179afd2e) + + NEWS: Add NEWS for 2.3.11.3 + + +M NEWS + +2020-07-28 11:02:06 +0300 Aki Tuomi (6d8f355105) + + NEWS: Add NEWS for 2.3.11.2 + + +M NEWS + +2020-06-30 11:50:26 +0300 Aki Tuomi (c837ead073) + + NEWS: Add news for 2.3.11 + + +M NEWS + +2020-12-10 19:31:28 +0100 Timo Sirainen (ad8c186cc0) + + man: doveadm-proxy - Minor fixes to doveadm proxy kick + + +M doc/man/doveadm-proxy.1.in + +2020-12-09 09:43:42 +0200 Aki Tuomi (078dfa8fbf) + + lib: test-file-cache - Assert map is not null before memcmp + + +M src/lib/test-file-cache.c + +2020-12-08 09:51:30 +0200 Aki Tuomi (f2c15393f9) + + lib-mail: test-message-search - Assert ret + + Found by static analysis + +M src/lib-mail/test-message-search.c + +2020-12-08 09:45:20 +0200 Aki Tuomi (73b307d6ff) + + lib-mail: test-message-search - Assert that found value is not NULL + + Satisfies static analysers + +M src/lib-mail/test-message-search.c + +2020-12-08 09:42:13 +0200 Aki Tuomi (6d454342a8) + + lib-mail: test-message-decoder - Assert ret + + Found by static analysis + +M src/lib-mail/test-message-decoder.c + +2020-11-30 22:10:28 +0200 Timo Sirainen (8b750e924e) + + lib-storage: Fix potential assert-crash when fetching body snippet + + This happened only in a rather special condition. Added unit test to + reproduce it. + + Fixes: Panic: file message-part-data.c: line 28 + (message_part_data_is_plain_7bit): assertion failed: (data != NULL) + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/test-mail.c + +2020-11-30 20:37:46 +0200 Timo Sirainen (67b6027028) + + lib-storage: Fix potential assert-crash when adding missing attachment flags + + This happened only in a rather special condition. Added unit test to + reproduce it. + + Fixes: Panic: file index-mail-headers.c: line 298 (index_mail_parse_header): + assertion failed: (part != NULL) + +M src/lib-storage/index/index-mail.c +M src/lib-storage/test-mail.c + +2020-12-07 13:09:50 +0200 Timo Sirainen (8b40060bf3) + + lib-dcrypt: istream-decrypt - Assert that max_buffer_size > 0 + + Otherwise all reads return -2, which will just result in assert-crash in + i_stream_read(). + +M src/lib-dcrypt/istream-decrypt.c + +2020-12-07 13:07:35 +0200 Timo Sirainen (103cb028e3) + + lib: istream-error - Set max_buffer_size + + Although nothing is actually read from the stream, some filter istreams + don't behave properly with max_buffer_size=0. Currently at least + istream-decrypt returns -2 for reads instead of -1. + + Fixes: Panic: file istream.c: line 320 (i_stream_read_memarea): assertion + failed: (_stream->skip != _stream->pos) + +M src/lib/istream.c + +2020-12-07 12:40:22 +0200 Timo Sirainen (200eb973c2) + + lib-storage: test_mail_storage_deinit() - Don't try to clear freed memory + + ctx was already freed. Trying to memset() into it will just result in + writing to already freed memory. + +M src/lib-storage/test-mail-storage-common.c + +2020-12-03 16:37:55 +0200 Aki Tuomi (4ba0954ca0) + + lib-oauth2: test-oauth2-jwt - Add tests for HS384 and HS512 + + +M src/lib-oauth2/test-oauth2-jwt.c + +2020-12-02 13:37:05 +0200 Aki Tuomi (530eb2cee2) + + lib-oauth2: Fix whitespace in test-oauth2-jwt.c + + +M src/lib-oauth2/test-oauth2-jwt.c + +2020-12-02 14:54:05 +0200 Aki Tuomi (1c6c689c1b) + + lib: test-hmac - Add tests for hmac sha384 + + +M src/lib/test-hmac.c + +2020-12-02 14:53:55 +0200 Aki Tuomi (6ae5b035ff) + + lib: test-hash-method - Add tests for sha2 + + +M src/lib/test-hash-method.c + +2020-12-02 14:53:39 +0200 Aki Tuomi (79bc83dad7) + + lib: hash-method - Add sha384 support + + +M src/lib/hash-method.c +M src/lib/sha-common.h +M src/lib/sha2.c +M src/lib/sha2.h + +2020-12-02 14:37:02 +0200 Aki Tuomi (c424c9054e) + + lib: Fix whitespace in sha2.c + + +M src/lib/sha2.c + +2020-11-24 10:20:05 -0500 Downtown Allday (bcfd1071f3) + + lib: test-hmac - Add HMAC 512 test + + +M src/lib/test-hmac.c + +2020-12-03 16:33:06 +0200 Aki Tuomi (df5989562f) + + lib: hmac - Support different hash algorithms + + Code was hardcoded for MD4,MD5,SHA-1. + +M src/lib/hmac.c + +2020-11-24 10:19:43 -0500 Downtown Allday (0acf019110) + + lib: hmac - Adjust HMAC_MAX_CONTEXT_SIZE to accommodate HMAC512 + + +M src/lib/hmac.h + +2020-12-03 16:28:40 +0200 Aki Tuomi (7381c12be2) + + lib: hash-method - Add block size + + This is needed for HMAC + +M src/lib/hash-method.c +M src/lib/hash-method.h +M src/lib/md4.c +M src/lib/md5.c +M src/lib/sha1.c +M src/lib/sha2.c +M src/lib/sha3.c + +2020-12-03 16:24:52 +0200 Aki Tuomi (d111a18e6c) + + lib: hash-method - Use named initializers + + +M src/lib/hash-method.c +M src/lib/md4.c +M src/lib/md5.c +M src/lib/sha1.c +M src/lib/sha2.c +M src/lib/sha3.c + +2020-06-05 21:29:44 +0200 Stephan Bosch (512739f51f) + + lib-oauth2: Remove unused include from oauth2.c. + + +M src/lib-oauth2/oauth2.c + +2020-06-05 21:16:58 +0200 Stephan Bosch (905a944955) + + lib-oauth2: Make oauth2_request_set_headers() static. + + +M src/lib-oauth2/oauth2-private.h +M src/lib-oauth2/oauth2-request.c + +2020-06-05 21:13:39 +0200 Stephan Bosch (d33c15dcfe) + + lib-oauth2: Rename oauth2_request_free_internal() to oauth2_request_free(). + + And make it static. + +M src/lib-oauth2/oauth2-private.h +M src/lib-oauth2/oauth2-request.c + +2020-06-05 21:06:30 +0200 Stephan Bosch (6d0f74d0db) + + lib-oauth2: Rename oauth2_parse_json() to oauth2_request_parse_json(). + + +M src/lib-oauth2/oauth2-private.h +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/test-oauth2-json.c + +2020-06-05 21:15:47 +0200 Stephan Bosch (cd3b73910f) + + lib-oauth2: Move oauth2_request_set_headers() to oauth2-request.c. + + +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.c + +2020-06-05 21:11:20 +0200 Stephan Bosch (febd427325) + + lib-oauth2: Move oauth2_request_abort() to oauth2-request.c. + + +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.c + +2020-06-05 21:09:39 +0200 Stephan Bosch (a08d19b449) + + lib-oauth2: Move oauth2_request_free_internal() to oauth2-request.c. + + +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.c + +2020-06-05 21:00:03 +0200 Stephan Bosch (72db70205f) + + lib-oauth2: Move oauth2_parse_json() to oauth2-request.c. + + +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.c + +2020-06-05 20:51:34 +0200 Stephan Bosch (d61b5dc49f) + + lib-oauth2: Reformat test-oauth2-jwt.c. + + +M src/auth/db-oauth2.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-06-05 20:51:19 +0200 Stephan Bosch (19dd872008) + + lib-oauth2: Reformat oauth2-jwt.c. + + +M src/lib-oauth2/oauth2-jwt.c + +2020-06-05 20:50:55 +0200 Stephan Bosch (0cd5624352) + + lib-oauth2: Reformat oauth2-key-cache.c. + + +M src/lib-oauth2/oauth2-key-cache.c + +2020-06-05 20:50:34 +0200 Stephan Bosch (ec0ed35e30) + + lib-oauth2: Reformat oauth2-request.c. + + +M src/lib-oauth2/oauth2-request.c + +2020-06-05 20:49:34 +0200 Stephan Bosch (e2e5d906dc) + + lib-oauth2: Reformat oauth2.c. + + +M src/lib-oauth2/oauth2.c + +2020-06-05 20:49:58 +0200 Stephan Bosch (eba983d328) + + lib-oauth2: Reformat oauth2-private.h. + + +M src/lib-oauth2/oauth2-private.h + +2020-06-05 20:49:09 +0200 Stephan Bosch (c599bd5cca) + + lib-oauth2: Reformat oauth2.h. + + +M src/lib-oauth2/oauth2.h + +2020-05-27 01:49:52 +0300 Timo Sirainen (f3ec003404) + + auth: db-oauth2 - Add consistent prefix for all error messages + + +M src/auth/db-oauth2.c + +2020-05-27 01:36:41 +0300 Timo Sirainen (cb327481b1) + + auth: db-oauth2 - Fix debug logging + + Don't log a debug message when the callback is going to be logging exactly + the same message as info/error. + +M src/auth/db-oauth2.c + +2020-05-27 01:25:41 +0300 Timo Sirainen (98988c187e) + + auth: db-oauth2 - Call db_oauth2_lookup_continue_valid() after valid grant + + No need to check for error/validity again in db_oauth2_lookup_continue(). + +M src/auth/db-oauth2.c + +2020-05-27 01:22:13 +0300 Timo Sirainen (8d07269115) + + auth: db-oauth2 - db_oauth2_lookup_continue() - Minor cleanup to avoid + variables + + +M src/auth/db-oauth2.c + +2020-05-27 01:20:36 +0300 Timo Sirainen (be894aaf8b) + + auth: db-oauth2 - Split off db_oauth2_lookup_continue_valid() + + +M src/auth/db-oauth2.c + +2020-05-27 01:03:44 +0300 Timo Sirainen (34f9f30799) + + auth: db-oauth2 - db_oauth2_lookup_passwd_grant() - Reorder error handling + code flow + + +M src/auth/db-oauth2.c + +2020-05-27 01:03:11 +0300 Timo Sirainen (c29ebbaf0f) + + auth: db-oauth2 - Improve "Internal error" message for grant lookups + + +M src/auth/db-oauth2.c + +2020-05-27 00:59:49 +0300 Timo Sirainen (e0895ff34c) + + auth: db-oauth2 - Add and use db_oauth2_field_find() + + +M src/auth/db-oauth2.c + +2020-05-27 00:57:24 +0300 Timo Sirainen (06157f5331) + + auth: db-oauth2 - Don't set db_oauth2_request.token for grant lookups + + The grant lookup sets the token. There's no need to set it before that. + +M src/auth/db-oauth2.c + +2020-05-27 00:50:07 +0300 Timo Sirainen (fd15e2e61f) + + auth: db-oauth2 - db_oauth2_lookup_passwd_grant() - Reorder code flow + + No behavioral changes. + +M src/auth/db-oauth2.c + +2020-05-27 00:44:16 +0300 Timo Sirainen (062b6fa34d) + + auth: db-oauth2 - Refactor "OAuth2 token missing from reply" code path + + It can be NULL only when coming from db_oauth2_lookup_passwd_grant(), so + handle it there. + +M src/auth/db-oauth2.c + +2020-05-27 00:36:44 +0300 Timo Sirainen (72e4a833ed) + + auth: db-oauth2 - db_oauth2_template_export() - Make var_expand() error + handling consistent + + Other var_expand() errors include the original string in the error message, + so this one should also. + +M src/auth/db-oauth2.c + +2020-05-27 00:30:45 +0300 Timo Sirainen (2cb1fde47e) + + lib-oauth2: Improve error message when server returns unexpected result + + If the result isn't 2xx or 4xx, use the HTTP response message as the error + message. + +M src/lib-oauth2/oauth2-request.c + +2020-05-27 00:27:15 +0300 Timo Sirainen (1455a6fa77) + + lib-oauth2: Don't fail if oauth response payload is NULL + + oauth2_parse_json() is happy with with empty payload (Content-Length: 0), so + it should be happy also when payload is NULL (Content-Length is missing). + +M src/lib-oauth2/oauth2-request.c + +2020-05-27 00:21:24 +0300 Timo Sirainen (a434131fea) + + lib-oauth2: Remove unused oauth2-passwd-grant.c + + +D src/lib-oauth2/oauth2-passwd-grant.c + +2020-05-27 00:19:42 +0300 Timo Sirainen (f2755d5188) + + lib-oauth2, auth: Remove redundant oauth2_request_result.success + + success is the same as (error == NULL) + +M src/auth/db-oauth2.c +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.h + +2020-05-27 00:12:49 +0300 Timo Sirainen (7db7eb3caa) + + lib-oauth2: json_parsed_cb() - Remove redundant success parameter + + success is the same as (error == NULL) + +M src/lib-oauth2/oauth2-private.h +M src/lib-oauth2/oauth2-request.c +M src/lib-oauth2/oauth2.c +M src/lib-oauth2/test-oauth2-json.c + +2020-10-01 16:02:26 +0300 Timo Sirainen (aad5e2d5ec) + + fs-compress: Use istream-decompress + + +M src/plugins/fs-compress/fs-compress.c + +2020-10-01 15:59:37 +0300 Timo Sirainen (fbe6a63b53) + + lib-compression: Fix detecting if input is bzip2 compressed + + The detection was broken at least for empty bzip2 input. + +M src/lib-compression/compression.c +M src/lib-compression/test-compression.c + +2020-10-01 15:36:08 +0300 Timo Sirainen (8b6142f9ba) + + lib-compression: Add istream-decompress + + This stream detects the compression format and creates the proper istream + afterwards. This is more efficient than creating each compression istream + and using istream-try. + +M src/lib-compression/Makefile.am +M src/lib-compression/compression.h +A src/lib-compression/istream-decompress.c +M src/lib-compression/test-compression.c + +2020-11-19 17:50:22 +0200 Timo Sirainen (d680014059) + + lib-storage: Add test-mail unit test + + Initially it just accesses the mail randomly. + +M src/lib-storage/Makefile.am +A src/lib-storage/test-mail.c + +2020-11-19 15:56:17 +0200 Timo Sirainen (b5c3c78594) + + mail-crypt: test-mail-crypt - Use test-mail-storage API + + +M src/plugins/mail-crypt/test-mail-key.c + +2020-11-19 15:37:54 +0200 Timo Sirainen (9d40291c59) + + lib-storage: Add a public test-mail-storage-common.h API + + Moved the public functions into test-mail-storage-common.c + +M src/lib-storage/Makefile.am +A src/lib-storage/test-mail-storage-common.c +A src/lib-storage/test-mail-storage-common.h +M src/lib-storage/test-mail-storage.c + +2020-11-19 16:13:53 +0200 Timo Sirainen (4c75927a47) + + lib-storage: test-mail-storage - Die on test_mail_init_user() failure + + This way the caller won't need to do error handling. The errors were being + handled inconsistently. + +M src/lib-storage/test-mail-storage.c + +2020-11-19 15:35:07 +0200 Timo Sirainen (c34c37f8de) + + lib-storage: test-mail-storage - Remove randomness from test home directory + + Also rename test_mail_storage_ctx.mail_home to home_root to better describe + it. + +M src/lib-storage/test-mail-storage.c + +2020-11-19 15:32:20 +0200 Timo Sirainen (8dd863cf2e) + + lib-storage: test-mail-storage - Change test_mail_init() to allocate the + struct + + +M src/lib-storage/test-mail-storage.c + +2020-11-19 15:29:01 +0200 Timo Sirainen (56845ea6a3) + + lib-storage: test-mail-storage - Use settings struct for + test_mail_init_user() + + +M src/lib-storage/test-mail-storage.c + +2020-10-22 12:22:40 +0300 Timo Sirainen (8299232acb) + + lib: i_stream_read() - Don't create empty snapshots + + This allows the read() implementation to read data into the existing + memarea. Otherwise a new memarea might have to be created because the old + one is referenced by the snapshot. + +M src/lib/istream.c + +2020-10-29 13:35:35 +0200 Timo Sirainen (bfb013491a) + + imap: Process title wrongly shows connections are "corked" + + The flush callback in ostream-file always corks the connection, so the + process title needs to be delayed until it's no longer in that callback. Add + a 0-timeout to update the process title. + +M src/imap/imap-client.c +M src/imap/imap-common.h +M src/imap/main.c + +2020-11-25 11:03:57 -0500 Josef 'Jeff' Sipek (dd8f5d776e) + + lib-lua: Rewrite arg checking macros to use STMT_{START,END} + + This makes it safer to use. Additionally, this commit adds some newlines to + the macro definition to make it more readable. + +M src/lib-lua/dlua-script-private.h + +2020-11-10 16:10:05 +0200 Timo Sirainen (30c453c8d9) + + login-proxy: Use persistent istream buffers + + Constantly freeing and allocating the memory is a bit slow, but because + Dovecot allocates all memory with calloc() the memory cleaing is especially + slow. With this change proxying lots of data in a plaintext connection takes + about 50% less CPU. The downside is that it uses about 4 kB more memory per + istream (8 kB total, for both client and server connections), but that + shouldn't be too bad for proxies since they don't use much memory otherwise. + +M src/login-common/login-proxy.c + +2020-12-02 06:06:59 +0200 Martti Rannanjärvi (e2f3a23190) + + lib-mail: test-istream-qp-decoder.c - Free input_data_limited + + +M src/lib-mail/test-istream-qp-decoder.c + +2020-12-01 10:25:09 +0100 Stephan Bosch (043d111cea) + + lib-http: http-client-request - Fix payload assertions in + http_client_request_send_more(). + + When the request payload is finished, both req->payload_input and + req->payload_output could be NULL, so the assertions on those being not NULL + need to happen after the check for req->payload_finished. + + This particularly causes problems with the blocking + http_client_request_send/finish_payload() API, which constantly modifies + req->payload_input and sets it to NULL to finish the output. + + This caused a panic: + + Panic: file http-client-request.c: line 1232 + (http_client_request_send_more): assertion failed: (req->payload_input != + NULL) + +M src/lib-http/http-client-request.c + +2018-04-04 15:18:51 +0200 Stephan Bosch (3d9e01ccb2) + + lib-http: test-http-payload - Add test for blocking client output payload. + + +M src/lib-http/test-http-payload.c + +2018-04-04 03:02:24 +0200 Stephan Bosch (e3b3155131) + + lib-http: test-http-payload - Implement reference counting for client + request. + + +M src/lib-http/test-http-payload.c + +2020-06-27 18:48:40 +0200 Stephan Bosch (7a853719d6) + + lib-http: Reformat http-client-request.c. + + +M src/lib-http/http-client-request.c + +2020-02-25 13:08:21 +0200 Martti Rannanjärvi (15a4c057eb) + + notify: Free notify_mail_txn when a plugin does not define + mail_transaction_commit + + +M src/plugins/notify/notify-plugin.c + +2020-11-06 11:47:18 +0100 Markus Valentin (362ebb22c1) + + lib-mail: Add tests for message-size functions + + Integrate testing of header and body size to existing tests and add new + tests specifically for message-size. + +M src/lib-mail/Makefile.am +M src/lib-mail/test-message-header-parser.c +M src/lib-mail/test-message-parser.c +A src/lib-mail/test-message-size.c + +2020-11-09 12:35:09 +0100 Markus Valentin (c06349db1c) + + lib-mail: Extend quoted-printable encoding tests + + +M src/lib-mail/test-istream-qp-encoder.c +M src/lib-mail/test-qp-encoder.c + +2020-11-04 14:38:10 +0100 Markus Valentin (e3b45a1e30) + + lib-mail: Extend quoted-printable decoding tests + + +M src/lib-mail/test-istream-qp-decoder.c +M src/lib-mail/test-qp-decoder.c +M src/lib-mail/test-quoted-printable.c + +2020-11-19 13:30:54 +0100 Markus Valentin (78b86e7859) + + lib-mail: qp-encoder: Ensure trailing white space is followed by printable + + In case a qp-encoded line ends with space or tab append a soft line break to + prevent white space being cut off by decoding instance. + +M src/lib-mail/qp-encoder.c + +2020-11-19 15:32:00 +0200 Aki Tuomi (12d3ac4d88) + + lib-mail: test-message-parser - Convert to signed when calculating variance + + Satisfies runtime analyser, broken in 6b60e5ed490 + +M src/lib-mail/test-message-parser.c + +2020-11-18 09:43:07 +0200 Aki Tuomi (2e100e4531) + + lib-mail: message-decoder - Fix CTE parser to accept only syntaxically valid + values + + +M src/lib-mail/message-decoder.c +M src/lib-mail/test-message-decoder.c + +2020-11-17 09:29:30 +0200 Aki Tuomi (0f3bbb5bf4) + + lib-mail: test-rfc822-parser - Add tests for content-type full parsing + + +M src/lib-mail/test-rfc822-parser.c + +2020-11-18 09:31:03 +0200 Aki Tuomi (49aab3624e) + + lib-mail: message-decoder - Constify message_decoder_parse_cte parameter + + +M src/lib-mail/message-decoder.c +M src/lib-mail/message-decoder.h + +2020-11-16 16:20:30 +0200 Aki Tuomi (e29c697e03) + + lib-mail: rfc822-parser - Fix content-type parser to accept only valid + values + + +M src/lib-mail/rfc822-parser.c +M src/lib-mail/test-rfc822-parser.c + +2020-10-29 12:55:21 +0200 Timo Sirainen (6fad5cd6fc) + + imap: Fix potential hang if client disconnects with pipelined ambiguous + commands + + For example if client pipelines FETCH+LOGOUT commands and disconnects during + a large FETCH output, the LOGOUT command is processed as waiting for + unambiguity. This code path however doesn't detect a client disconnection, + and input IO handler is removed so it can't detect it either. So the imap + process hangs. + +M src/imap/imap-client.c + +2020-10-29 12:52:16 +0200 Timo Sirainen (4eb35e2268) + + imap: Move disconnected-check inside client_continue_pending_input() + + This way all of its callers don't have to check if the client is + disconnected. + +M src/imap/cmd-append.c +M src/imap/cmd-idle.c +M src/imap/imap-client.c +M src/imap/imap-search.c +M src/imap/main.c + +2020-11-19 11:00:43 +0200 Timo Sirainen (e540d0dda6) + + lib-storage: Update comments about mail_search_args_init() and refcount + handling + + +M src/lib-storage/mail-search.h + +2020-11-23 12:17:52 +0000 Siavash Tavakoli (8582882204) + + doveadm: Add timestamp prefixes for debug output + + But still allow overriding from env by setting LOG_STDERR_TIMESTAMP. + +M src/doveadm/doveadm.c + +2020-11-23 18:15:57 +0200 Timo Sirainen (6b0a59f00c) + + lib-dict: dict_iterate() - Fix segfault with DICT_ITERATE_FLAG_NO_VALUE + + Broken by cf0d196c2b373a37bc1ab4e10fde89fb61089f3c + +M src/lib-dict/dict.c + +2020-11-23 16:49:49 +0200 Timo Sirainen (ca225869b1) + + dict-cdb: Fix to use new dict.iterate() API + + Forgot in 65b7f04f945781cd042f5ad2f6f104f532143ee7 + +M src/lib-dict-backend/dict-cdb.c + +2019-11-22 01:17:32 +0000 rofl0r (090feba9c3) + + m4: size_t_signed.m4 - use static assertion instead of run test + + a small step towards cross-compile-ability. + +M m4/size_t_signed.m4 + +2020-08-10 20:18:48 +0300 Timo Sirainen (26fe1e277c) + + lib-index: Improve debug logging + + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-write.c +M src/lib-index/mail-transaction-log.c + +2020-08-10 20:16:30 +0300 Timo Sirainen (f2a0fe95ed) + + lib-index: Handle rapidly rotating transaction logs without unnecessary fsck + + +M src/lib-index/mail-index-map-read.c + +2020-08-10 18:00:09 +0300 Timo Sirainen (83a06c785f) + + lib-index: mail_index_reopen_if_changed() - Add reopened_r parameter + + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index.c + +2020-08-10 17:53:08 +0300 Timo Sirainen (5c45509554) + + lib-index: mail_index_sync_map() - Move corruption handling to caller + + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-sync-private.h +M src/lib-index/mail-index-sync-update.c + +2020-08-10 17:45:08 +0300 Timo Sirainen (264f583a46) + + lib-index: mail_index_map_latest_sync() - Minor refactoring + + +M src/lib-index/mail-index-map-read.c + +2020-08-10 17:43:50 +0300 Timo Sirainen (dd5ee8e233) + + lib-index: Split off mail_index_map_latest_sync() + + +M src/lib-index/mail-index-map-read.c + +2020-08-10 17:33:07 +0300 Timo Sirainen (32ab929a9d) + + lib-index: mail_index_sync_map() - Always return -1 on I/O failures + + Even though with force=FALSE in theory it would be possible to work around + it, but more likely it will just cause another I/O error. This simplifies + the code for the following changes. + +M src/lib-index/mail-index-sync-update.c + +2020-08-10 17:31:27 +0300 Timo Sirainen (050668ef37) + + lib-index: Move calling mail_index_sync_map_want_index_reopen() to + mail_index_map() + + +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-sync-private.h +M src/lib-index/mail-index-sync-update.c + +2020-08-10 17:29:44 +0300 Timo Sirainen (efc9c13e73) + + lib-index: Split off mail_index_sync_map_want_index_reopen() + + +M src/lib-index/mail-index-sync-update.c + +2020-08-10 20:02:22 +0300 Timo Sirainen (268de25bd4) + + lib-index: mail_transaction_log_indexid_changed() - Clarify refcount + handling + + Although the old code worked as well, it wasn't so obvious since the + behavior was slightly different when the log->head had extra references. + Clarify the behavior by always unreferencing after the new log file is + created. + +M src/lib-index/mail-transaction-log.c + +2020-08-10 20:09:41 +0300 Timo Sirainen (9f46e634c0) + + lib-index: mail_transaction_log_file_free() - Assert that refcount=0 + + +M src/lib-index/mail-transaction-log-file.c + +2020-08-10 19:59:36 +0300 Timo Sirainen (f388a47038) + + lib-index: mail_index_write() - Make sure index is rewritten after log + rotation + + Otherwise the index will point to .log.2 file, which could become deleted + before the index is rewritten again. + +M src/lib-index/Makefile.am +M src/lib-index/mail-index-write.c +A src/lib-index/test-mail-index-write.c + +2020-08-10 19:54:55 +0300 Timo Sirainen (8eea1e5c8c) + + lib-index: mail_transaction_log_view_set() - Make sure log files aren't + freed too early + + It's possible that mail_transaction_log_find_file() frees one of the files + that are already in the linked list. Avoid it by referencing the file + immediately when it's added to the list. + +M src/lib-index/mail-transaction-log-view.c +M src/lib-index/test-mail-transaction-log-view.c + +2020-11-12 18:01:18 +0200 Timo Sirainen (8e6fab92e6) + + lib-index: test-mail-transaction-log-view - Move + test_transaction_log_file_add() + + +M src/lib-index/test-mail-transaction-log-view.c + +2020-08-10 17:12:32 +0300 Timo Sirainen (327da2aa8a) + + lib-index: mail_transaction_log_view_set() - Return -1 only on I/O error + + The callers that care about the difference: + + * mail_index_sync_map() already assumes that -1 means I/O error + * mail_index_sync_set_log_view() handles 0 by logging an error and fscking + the index, which is likely better than just returning failure. + * view_sync_set_log_view_range()'s caller handles 0 by rebuilding the + missing changes in memory. So returning 0 makes it work better. + * dsync_log_set() and mailbox_get_expunges_init() have fallbacks for + handling 0, while -1 would just return an error. + +M src/lib-index/mail-transaction-log-view.c +M src/lib-index/mail-transaction-log.h +M src/lib-index/test-mail-transaction-log-view.c + +2020-08-10 17:06:05 +0300 Timo Sirainen (39e2477b7c) + + lib-index: mail_transaction_log_file_get_highest_modseq_at() - Separate I/O + errors from corruption + + +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log-view.c +M src/lib-index/test-mail-transaction-log-file.c +M src/lib-index/test-mail-transaction-log-view.c + +2020-11-13 19:30:29 +0200 Timo Sirainen (2aedf5afa7) + + lib: Add data_stack_get_used_size() + + Mainly for debugging purposes. + +M src/lib/data-stack.c +M src/lib/data-stack.h + +2020-11-17 17:26:28 +0200 Timo Sirainen (a13d1c6c23) + + doveadm dict iter: Support printing multiple values + + +M src/doveadm/doveadm-dict.c + +2020-11-17 14:41:31 +0200 Timo Sirainen (bd6caf4f54) + + dict-sql: Support dict_iterate_values() + + +M src/lib-dict-backend/dict-sql.c + +2020-11-17 14:24:57 +0200 Timo Sirainen (1c4cef0099) + + dict, dict-client: Support dict_iterate_values() + + This doesn't change the dict client protocol in an incompatible way, so it's + possible to mix old/new client/server. + +M src/dict/dict-commands.c +M src/lib-dict/dict-client.c + +2020-11-17 14:20:40 +0200 Timo Sirainen (cf0d196c2b) + + lib-dict: Add dict_iterate_values() + + +M src/lib-dict/dict.c +M src/lib-dict/dict.h + +2020-11-17 14:09:30 +0200 Timo Sirainen (65b7f04f94) + + lib-dict: Change dict.iterate() API to support returning multiple values + + This requires changes to all dict drivers. + +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-extra/dict-fs.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-fail.c +M src/lib-dict/dict-file.c +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c + +2020-11-17 14:30:27 +0200 Timo Sirainen (028f46875b) + + lib-dict: dict_iterate() - Always return NULL if DICT_ITERATE_FLAG_NO_VALUE + is used + + This way it behaves more consistently across backends. + +M src/lib-dict-backend/dict-sql.c +M src/lib-dict-extra/dict-fs.c +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c + +2020-11-20 12:52:47 +0100 Markus Valentin (0d9e962605) + + doveadm: mail: doveadm_mail_failed_error() - Set specific exit code for + MAIL_ERROR_INUSE + + Set exit code DOVEADM_EX_NOTPOSSIBLE in case MAIL_ERROR_INUSE is set via + doveadm_mail_failed_error(). This exit code is used to indicate that a + operation cannot be done because another session prevents it. + +M src/doveadm/doveadm-mail.c + +2020-11-20 12:15:18 +0200 Timo Sirainen (4b93cff3d8) + + doveadm: When sending server logs to client, make sure ioloop isn't set to + NULL + + This could have happened if there was any logging done outside command + handling. For example a doveadm command used http-client, which has a + timeout that triggers logging only after the command is finished. + + Fixes segfault and: Panic: file http-client.c: line 642 + (http_client_context_close): assertion failed: (cctx->clients_list == NULL) + +M src/doveadm/client-connection-tcp.c + +2020-11-20 12:23:21 -0500 Josef 'Jeff' Sipek (2dac245580) + + lib-lua: Don't add system libs to libdovecot_lua_la_DEPENDENCIES + + This confuses the build system, causing it to think that it needs to build + those. This manifests itself as: + + make: *** No rule to make target '-L/usr/lib/x86_64-linux-gnu', needed by + 'libdovecot-lua.la'. Stop. + +M src/lib-lua/Makefile.am + +2020-11-19 22:07:37 +0200 sergey.kitov (4f4cb20134) + + imap: Fix memory leak in get_expunges_fallback() + + +M src/imap/imap-fetch.c + +2020-09-11 16:06:46 +0300 Aki Tuomi (8d52452a58) + + lib: test-file-cache - Use memcmp + + Data is not null-terminated, so use memcmp. + +M src/lib/test-file-cache.c + +2020-09-11 14:11:55 +0300 Aki Tuomi (5c49871511) + + lib: test-file-cache - Assert map value + + Satisfies static analyser + +M src/lib/test-file-cache.c + +2020-11-12 14:15:54 -0500 Josef 'Jeff' Sipek (2434131b41) + + lib: event-filter-parser - Test simple but invalid input + + +M src/lib/test-event-filter-parser.c + +2020-11-12 13:49:49 -0500 Josef 'Jeff' Sipek (a19514bbd3) + + lib: event-filter - Do not assert that there in no output on error + + When the input is a simple (but invalid) expression (e.g., a=b=c) the output + variable may be set. This is perfectly fine. + + The assertion (and the associated failure) come from when event filter + parsing was switched to the new filter syntax + (fcba1d530737813de11d9d730d5db6496e2e574b). + +M src/lib/event-filter.c + +2020-10-19 13:47:10 -0400 Josef 'Jeff' Sipek (bfe9533c2e) + + stats: openmetrics - Include submetric name only when present + + Otherwise we SIGSEGV. + +M src/stats/stats-service-openmetrics.c + +2020-11-11 00:11:35 +0200 Timo Sirainen (7a6f9517c5) + + dsync: Fix UID renumbering when GUIDs aren't used + + Mails that have local UIDs won't be in import_uids hash table, so they're + not otherwise being iterated at the end and checked if they need + renumbering. + +M src/doveadm/dsync/dsync-mailbox-import.c + +2020-11-10 19:57:26 +0200 Timo Sirainen (68685ba621) + + dsync: Incremental sync sometimes missed messages when GUIDs weren't + available + + GUIDs aren't available when using imapc, so this affected migrations. + +M src/doveadm/dsync/dsync-mailbox-import.c + +2020-11-09 09:04:36 +0200 Aki Tuomi (0725865f9c) + + .gitignore: Ignore coverage and temp files + + +M .gitignore + +2020-11-05 12:08:38 +0200 Aki Tuomi (6139812246) + + lib-mail: test-message-part-serialize - Add tests + + +M src/lib-mail/Makefile.am +A src/lib-mail/test-message-part-serialize.c + +2020-11-04 15:10:04 +0200 Aki Tuomi (9f94c71897) + + lib-mail: test-message-header-parser - Validate header value + + +M src/lib-mail/test-message-header-parser.c + +2020-11-04 15:09:45 +0200 Aki Tuomi (8ce92ceb22) + + lib-mail: test-message-header-parser - Test NUL bytes in header + + +M src/lib-mail/test-message-header-parser.c + +2020-11-04 12:35:16 +0200 Aki Tuomi (2b602c96e4) + + lib-mail: test-message-header-decode - Add more tests + + +M src/lib-mail/test-message-header-decode.c + +2020-11-04 12:34:57 +0200 Aki Tuomi (fcf197ebcc) + + lib-mail: test-message-header-decode - Use libcharset + + Otherwise we can only test utf-8 + +M src/lib-mail/Makefile.am +M src/lib-mail/test-message-header-decode.c + +2020-11-03 15:17:45 +0200 Aki Tuomi (b3713a072d) + + lib-mail: test-message-search - Add more message searching tests + + +M src/lib-mail/test-message-search.c + +2020-11-02 20:59:18 +0200 Aki Tuomi (3490e6b472) + + lib-mail: test-mail-user-hash - Add tests for mail_user_hash + + +M src/lib-mail/Makefile.am +A src/lib-mail/test-mail-user-hash.c + +2020-11-02 20:06:28 +0200 Aki Tuomi (f0ff6527a0) + + lib-mail: test-message-decoder - Add charset conversion test + + +M src/lib-mail/test-message-decoder.c + +2020-11-02 18:38:32 +0200 Aki Tuomi (233081353c) + + lib-mail: test-message-decoder - Test Content-Transfer-Encoding + + +M src/lib-mail/test-message-decoder.c + +2020-11-02 13:46:12 +0200 Aki Tuomi (6b60e5ed49) + + lib-mail: test-message-parser - Add tests for MIME-Version header + + +M src/lib-mail/test-message-parser.c + +2020-11-09 09:29:26 +0200 Aki Tuomi (3c137ff3ad) + + lib-mail: test-* - Add missing test_assert + + Need to ensure stream did not fail during parsing. + +M src/lib-mail/test-message-decoder.c +M src/lib-mail/test-message-parser.c +M src/lib-mail/test-message-part.c + +2020-11-09 09:22:28 +0200 Aki Tuomi (8f8558f6d0) + + lib-mail: test-message-parser - Use message_part_is_equal + + Replace msg_parts_cmp with message_part_is_equal. + +M src/lib-mail/test-message-parser.c + +2020-11-02 13:15:24 +0200 Aki Tuomi (fd7711d150) + + lib-mail: test-message-parser - Refactor message parsing to utility function + + Makes next changes easier. + +M src/lib-mail/test-message-parser.c + +2020-11-09 09:16:27 +0200 Aki Tuomi (34a2b76343) + + lib-mail: Add message_part_is_equal + + Returns TRUE if two parts are equal. + +M src/lib-mail/message-part.c +M src/lib-mail/message-part.h + +2020-11-11 11:09:02 +0200 Timo Sirainen (7c14211f94) + + configure.ac: Finish removing vpopmail support + + +M configure.ac + +2020-10-27 15:12:19 +0200 Timo Sirainen (12da020f5f) + + lib-storage: Add prefix to failed mailbox list index rebuild error messages + + This makes it clearer that the failure is happening because index was being + rebuilt. + +M src/lib-storage/list/mailbox-list-index.c + +2020-10-27 15:13:39 +0200 Timo Sirainen (152214f576) + + lib-storage: Fix error message when mailbox list index rebuild fails + + The error needs to be copied to mailbox_list, otherwise it's just + "Unknown internal list error". + +M src/lib-storage/list/mailbox-list-index.c + +2020-10-27 15:11:12 +0200 Timo Sirainen (80de9f5b66) + + lib-storage: Fix mailbox list iteration error handling for INBOX + + If INBOX isn't in the first namespace, the error wasn't correctly set for + it. + +M src/lib-storage/list/mailbox-list-iter.c + +2020-10-27 15:08:15 +0200 Timo Sirainen (2fbc6c3478) + + lib-storage: Use mailbox_get_last_mail_error() for mailbox_get_path_to() + errors + + mailbox_list_get_last_error() happens to work currently, but it's + accidental. + +M src/lib-storage/index/index-storage.c + +2020-11-02 18:55:16 +0200 Timo Sirainen (58f5d604b5) + + lib-index: Fix detecting if index is undeleted + + It was possible that mail_index_is_deleted() kept returning that the index + was deleted, even if it was marked as undeleted. This happened when the + deletion was in dovecot.index.log.2, undeletion in dovecot.index.log and + dovecot.index pointed to the .log.2 file. This caused the .log file to be + read first, which sees the undeletion. Later on the .log.2 was parsed and it + marked the index back as deleted. + +M src/lib-index/mail-index-private.h +M src/lib-index/mail-transaction-log-file.c + +2020-11-10 01:30:06 +0200 Timo Sirainen (1a96ec2fae) + + lib-fts: Avoid NULL pointer arithmetic + + Even though it was only doing +0. Fixes: runtime error: applying zero offset + to null pointer + +M src/lib-fts/fts-tokenizer-generic.c +M src/lib-fts/fts-tokenizer.c + +2020-11-09 18:10:21 +0200 Timo Sirainen (8e65d366a2) + + lib-smtp: smtp_address_init_from_msg() - Avoid implicit char to unsigned + char conversion + + Fixes calling smtp_char_is_qpair() with ubsan: runtime error: implicit + conversion from type 'char' of value -61 (8-bit, signed) to type 'unsigned + char' changed the value to 195 (8-bit, unsigned) + +M src/lib-smtp/smtp-address.c + +2020-11-09 17:52:51 +0200 Timo Sirainen (ddf77cf384) + + lib-index: Add explicit wrapping to 8bit variable increments + + Fixes ubsan errors: runtime error: implicit conversion from type 'int' of + value 256 (32-bit, signed) to type 'uint8_t' (aka 'unsigned char') changed + the value to 0 (8-bit, unsigned) + +M src/lib-index/mail-cache-lookup.c +M src/lib-index/mail-cache-purge.c + +2020-11-09 17:38:26 +0200 Timo Sirainen (e416d0c6f9) + + lib: istream-concat - Avoid NULL pointer arithmetic + + Even though it was only doing +0. Fixes: runtime error: applying zero offset + to null pointer + +M src/lib/istream-concat.c + +2020-11-09 17:35:15 +0200 Timo Sirainen (73ade3503a) + + lib: istream-chain - Avoid NULL pointer arithmetic + + Even though it was only doing +0. Fixes: runtime error: applying zero offset + to null pointer + +M src/lib/istream-chain.c + +2020-11-09 16:55:06 +0200 Timo Sirainen (ec07ca4262) + + lib: MODULE_CONTEXT_SET*() - Avoid NULL pointer arithmetic + + Even though it was only doing +0. Fixes: runtime error: applying zero offset + to null pointer + +M src/lib/module-context.h + +2020-11-09 16:09:05 +0200 Timo Sirainen (7068d53e8d) + + lib: Add and use TYPE_CHECKS() macro to standardize type checking for + functions + + This helps especially to avoid adding COMPILE_ERROR_*() macros to NULL + pointers, which results in ubsan errors: runtime error: applying zero offset + to null pointer + + These changes also remove the use of gcc-specific ({...}) code in the + macros, making them slightly more portable. + +M src/lib/array.h +M src/lib/buffer.h +M src/lib/hash.h +M src/lib/macros.h + +2020-11-09 15:39:57 +0200 Timo Sirainen (876a22a195) + + lib: COMPILE_ERROR_IF_TRUE() - Return FALSE instead of 0 + + This will be needed for the following changes to avoid warnings with + -Wstrict-bool. + +M src/lib/macros.h + +2020-11-09 13:04:43 +0200 Timo Sirainen (ce132c38c1) + + lib-fs: fs_file_init_parent() - Keep mode and flags parameters separated + + Internally cast them both to (int) before ORing them together for the + fs_file_init_with_event() call. + + This avoids compiler warnings with -Wenum-enum-conversion: warning: bitwise + operation between different enumeration types ('enum fs_open_mode' and 'enum + fs_open_flags') + +M src/lib-fs/fs-api-private.h +M src/lib-fs/fs-api.c +M src/lib-fs/fs-metawrap.c +M src/lib-fs/fs-randomfail.c +M src/lib-fs/fs-sis-queue.c +M src/lib-fs/fs-sis.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/mail-crypt/fs-crypt-common.c + +2020-10-23 16:24:09 -0400 Josef 'Jeff' Sipek (bf7952d33e) + + auth: Remove ntlm mechanism & the LANMAN and NTLM password schemes + + +M COPYING +M configure.ac +M src/Makefile.am +M src/auth/Makefile.am +D src/auth/mech-ntlm.c +M src/auth/mech.c +M src/auth/password-scheme.c +M src/auth/test-libpassword.c +M src/auth/test-mech.c +M src/doveadm/Makefile.am +D src/lib-ntlm/Makefile.am +D src/lib-ntlm/ntlm-des.c +D src/lib-ntlm/ntlm-des.h +D src/lib-ntlm/ntlm-encrypt.c +D src/lib-ntlm/ntlm-encrypt.h +D src/lib-ntlm/ntlm-flags.h +D src/lib-ntlm/ntlm-message.c +D src/lib-ntlm/ntlm-message.h +D src/lib-ntlm/ntlm-types.h +D src/lib-ntlm/ntlm.h + +2020-10-16 09:18:31 -0400 Josef 'Jeff' Sipek (d3d02fdd71) + + auth: Remove vpopmail user & pass db support + + +M configure.ac +M doc/example-config/conf.d/10-auth.conf +M doc/example-config/conf.d/Makefile.am +D doc/example-config/conf.d/auth-vpopmail.conf.ext +D m4/want_vpopmail.m4 +M src/auth/Makefile.am +M src/auth/db-checkpassword.c +D src/auth/passdb-vpopmail.c +M src/auth/passdb.c +D src/auth/userdb-vpopmail.c +D src/auth/userdb-vpopmail.h +M src/auth/userdb.c +M src/master/main.c + +2020-10-16 09:01:19 -0400 Josef 'Jeff' Sipek (8b5f5f78e2) + + auth: Remove S/Key mechanism & password scheme + + +M doc/example-config/conf.d/10-auth.conf +M src/auth/Makefile.am +M src/auth/main.c +R089 src/auth/mech-otp-skey-common.c src/auth/mech-otp-common.c +R074 src/auth/mech-otp-skey-common.h src/auth/mech-otp-common.h +M src/auth/mech-otp.c +D src/auth/mech-skey.c +M src/auth/mech.c +M src/auth/password-scheme.c +M src/auth/test-libpassword.c +M src/auth/test-mech.c + +2020-10-16 08:50:21 -0400 Josef 'Jeff' Sipek (01ad604b77) + + auth: Remove RPA mechanism & password scheme + + +M src/auth/Makefile.am +D src/auth/mech-rpa.c +M src/auth/mech.c +D src/auth/password-scheme-rpa.c +M src/auth/password-scheme.c +M src/auth/password-scheme.h +M src/auth/test-libpassword.c +M src/auth/test-mech.c + +2020-10-16 08:31:34 -0400 Josef 'Jeff' Sipek (37af563917) + + auth: Remove postmap socket type + + +M src/auth/main.c + +2020-10-16 08:28:12 -0400 Josef 'Jeff' Sipek (0cf4e1e13c) + + auth: Remove support for SIA passdb + + +M configure.ac +D m4/want_sia.m4 +M src/auth/Makefile.am +D src/auth/passdb-sia.c +M src/auth/passdb.c + +2020-10-23 10:56:08 -0400 Josef 'Jeff' Sipek (7eaf9b0c6d) + + lib: Be less verbose in event filter tests + + Only print the input string if the test failed. + +M src/lib/test-event-filter-parser.c + +2020-10-27 23:16:44 +0100 Stephan Bosch (184a9526e5) + + lib-smtp: smtp-server-connection - Make sure output stream errors are + handled. + + +M src/lib-smtp/smtp-server-connection.c + +2020-10-26 10:19:46 +0100 Stephan Bosch (75ab810591) + + lib-ssl-iosteam: ostream-openssl - Make sure error on plaintext streams is + propagated. + + +M src/lib-ssl-iostream/iostream-openssl.c +M src/lib-ssl-iostream/iostream-openssl.h +M src/lib-ssl-iostream/ostream-openssl.c + +2020-10-26 22:04:53 +0100 Stephan Bosch (5b4e8e9819) + + lib-ssl-iostrea: ostream-openssl - Add local variable for ssl_io in + o_stream_ssl_flush_buffer(). + + +M src/lib-ssl-iostream/ostream-openssl.c + +2020-11-05 13:25:19 +0200 Aki Tuomi (98798b85a1) + + auth: db-oauth2 - Do not allow empty active_value or active_attribute, when + other is set + + +M src/auth/db-oauth2.c + +2020-10-29 11:37:22 +0200 Aki Tuomi (0ce1f34957) + + auth: db-oauth2 - If active attribute is present in request, check it + + If the attribute is missing, do not assume it's false. + +M src/auth/db-oauth2.c + +2020-10-29 11:36:00 +0200 Aki Tuomi (3330dbe12b) + + auth: db-oauth2 - Check active attribute by default + + +M src/auth/db-oauth2.c + +2020-10-22 11:42:23 +0300 Aki Tuomi (fd8ae5027a) + + auth: db-oauth2 - Change active:false to mean invalid token + + Specifications say that invalid token, expired token and any other reason + why the token can be considered invalid should return + {"active":false} reply with no other fields. + + Thus, we need to consider this as invalid token. + +M src/auth/db-oauth2.c + +2020-10-22 11:41:16 +0300 Aki Tuomi (bec575990c) + + auth: db-oauth2 - Allow active:false without username + + +M src/auth/db-oauth2.c + +2020-10-13 17:34:12 +0300 sergey.kitov (17813e78b0) + + lib-storage: Skip setting log view in mailbox_get_expunges_init when + box->view is outdated. + + This fixes assert-crash when IMAP client uses QRESYNC and lots of changes + happen between syncing points. + + Fixes: Panic: file mail-transaction-log-view.c: line 144 + (mail_transaction_log_view_set): assertion failed: (min_file_seq <= + max_file_seq) + +M src/lib-storage/mailbox-get.c + +2020-10-29 12:34:57 +0200 Timo Sirainen (28301c44d0) + + lib-fts: test-fts-filter - Fix clang suspicious concatenation of string + literals warning + + Fixes: warning: suspicious concatenation of string literals in an array + initialization; did you mean to separate the elements with a comma? + [-Wstring-concatenation] + +M src/lib-fts/test-fts-filter.c + +2020-10-29 12:33:14 +0200 Timo Sirainen (9e72e39d52) + + lib: Standardize STMT_BEGIN and STMT_END + + do .. while(0) should work everywhere. + + This also fixes warnings given by new clang: warning: '}' and ')' tokens + terminating statement expression appear in different macro expansion + contexts [-Wcompound-token-split-by-macro] + +M src/lib/macros.h + +2020-10-29 12:32:44 +0200 Timo Sirainen (e7342877f8) + + lib: test-istream - Don't try to return void + + +M src/lib/test-istream.c + +2020-10-28 12:45:09 +0200 Aki Tuomi (05a491eebb) + + lib: test-file-cache - Add asserts for initial return value of + file_cache_get + + +M src/lib/test-file-cache.c + +2020-10-28 12:23:40 +0200 Aki Tuomi (57c63983d9) + + lib-lda: Update mail sizes to event only if they are known + + +M src/lib-lda/mail-deliver.c + +2020-10-28 12:22:58 +0200 Aki Tuomi (edb32ea0e8) + + lib-storage: raw-mail - Cast st_size to uoff_t + + mbox->size is unsigned field, and st_size will be -1 is the stat target is + not regular file or symbolic link. This can happen if it's stream like + stdin. + +M src/lib-storage/index/raw/raw-mail.c + +2020-10-23 14:54:22 +0300 Timo Sirainen (005a3d3b52) + + lib-fs: iteration - Fix crash when overwriting iteration error + + Can't use fs_file_path() because file is NULL. Instead, add the path to + struct fs_iter directly so it can be used in the error. + + Broken by eaaf40ca4e8994824abff89fc617c3cc737d83a5 + +M src/lib-fs/fs-api-private.h +M src/lib-fs/fs-api.c + +2020-10-22 20:21:41 +0300 Aki Tuomi (7a97dfb74f) + + quota: Avoid implicit integer conversion to unsigned in quota calculation + + Deducting negative number from unsigned integer causes signed integer + conversion to unsigned int, which results a too large positive number. Do + calculations using int64 instead. + + This did not cause any visible problems, found by clang integer + sanitization. + +M src/plugins/quota/quota.c + +2020-10-22 18:53:34 +0300 Aki Tuomi (408a4323ac) + + global: Fix overzealous use of ENUM_NEGATE + + +M src/lib-index/mail-transaction-log-file.c +M src/lib-ssl-iostream/iostream-openssl-context.c + +2020-10-22 22:46:35 +0300 Timo Sirainen (d1808bf2dd) + + lib: istream-seekable - Fix returning stream size + + The returned size may have been truncated. + +M src/lib/istream-seekable.c +M src/lib/test-istream-seekable.c + +2020-10-16 11:21:51 +0300 Timo Sirainen (966140ac53) + + lib-fs: Add assert to make sure we never log "(null)" as the old error + + +M src/lib-fs/fs-api.c + +2020-10-16 11:20:04 +0300 Timo Sirainen (8a094bf121) + + lib-fs: Fix logging old error when an unlogged error is replaced by new + error + + The old error was logged as "(null)" if the error happened in a non-root + (filter) file. + +M src/lib-fs/fs-api.c + +2020-10-16 10:19:59 +0300 Timo Sirainen (eaaf40ca4e) + + lib-fs: Include file's path when logging pending error messages + + Otherwise it may not be known which file the error is about. + + This happens when a file is freed without the last error being logged. Also + when an unlogged error is being replaced with a new error. + +M src/lib-fs/fs-api.c + +2020-09-24 13:44:58 -0400 Josef 'Jeff' Sipek (23645222de) + + lib: event-filter-parser - Disallow non-equals comparators on non-fields + + Non-equals comparisons (<, <=, >, and >=) aren't well defined for anything + other than fields. Therefore, if we encounter one of these comparators with + an event name, category name, or source location, we should error out and + avoid confusing the user. + +M src/lib/event-filter-parser.y +M src/lib/test-event-filter-parser.c + +2020-10-15 20:34:05 +0300 Timo Sirainen (81e2119bf7) + + lib-storage: Delay recreating event when closing mail + + If the mail isn't reused, the event is unnecessary. + +M src/lib-storage/index/index-mail.c + +2020-10-19 13:49:29 +0300 Aki Tuomi (fb6aa64435) + + global: Explicitly wrap values to fit target + + +M src/lib-compression/test-compression.c +M src/lib-imap/imap-utf7.c +M src/lib/base64.c +M src/lib/test-array.c +M src/lib/test-data-stack.c +M src/lib/test-istream-concat.c +M src/lib/test-istream-seekable.c + +2020-09-01 09:44:04 +0300 Aki Tuomi (48b2c8cfaf) + + global: Add explicit casts where needed + + Squash implicit conversion complains from sanitizer. + +M src/auth/crypt-blowfish.c +M src/lib-index/mail-index-sync-keywords.c +M src/lib-index/mail-index-sync-update.c +M src/lib-lua/dlua-dovecot.c +M src/lib-master/master-service.c +M src/lib-storage/index/mbox/mbox-sync-rewrite.c +M src/lib-storage/index/mbox/mbox-sync-update.c +M src/lib-storage/index/mbox/mbox-sync.c +M src/lib/test-array.c +M src/lib/test-failures.c +M src/lib/test-unichar.c + +2020-08-13 11:36:08 +0300 Aki Tuomi (fd35a7baa7) + + global: Disable undefined behaviour sanitization for select locations + + +M src/auth/crypt-blowfish.c +M src/lib-http/http-client-peer.c +M src/lib-otp/otp-parse.c +M src/lib/bits.h +M src/lib/buffer.c +M src/lib/data-stack.c +M src/lib/hash.c +M src/lib/md4.c +M src/lib/md5.c +M src/lib/strnum.c +M src/lib/test-bits.c + +2020-08-20 08:39:26 +0300 Aki Tuomi (f4cca6a5c6) + + global: Fix negation with constants to match target type + + +M src/doveadm/doveadm-dump-log.c +M src/lib-index/mail-cache-transaction.c +M src/lib-index/mail-index-private.h +M src/lib-index/mail-index-sync-update.c +M src/lib-index/mail-index-util.c +M src/lib-storage/index/index-mail.h +M src/lib-storage/index/mbox/mbox-lock.c +M src/lib-storage/list/mailbox-list-index-notify.c +M src/lib/hash.c +M src/lib/md4.c +M src/lib/md5.c +M src/lib/test-bits.c +M src/plugins/fts-squat/squat-uidlist.c + +2020-08-20 08:35:59 +0300 Aki Tuomi (4684a4a0e8) + + global: Use ENUM_NEGATE() macro where necessary + + +M src/auth/auth-fields.c +M src/doveadm/doveadm-dump-index.c +M src/doveadm/doveadm-mail-mailbox-cache.c +M src/doveadm/doveadm-mail-mailbox-status.c +M src/doveadm/dsync/dsync-brain.c +M src/doveadm/dsync/dsync-ibc-stream.c +M src/doveadm/dsync/dsync-transaction-log-scan.c +M src/imap-login/imap-proxy.c +M src/imap/cmd-list.c +M src/imap/imap-search.c +M src/imap/imap-sync.c +M src/lib-dict-backend/dict-cdb.c +M src/lib-fs/fs-api.c +M src/lib-fs/fs-metawrap.c +M src/lib-index/mail-cache-decisions.c +M src/lib-index/mail-cache-fields.c +M src/lib-index/mail-cache-purge.c +M src/lib-index/mail-cache-transaction.c +M src/lib-index/mail-index-map-hdr.c +M src/lib-index/mail-index-sync-update.c +M src/lib-index/mail-index-sync.c +M src/lib-index/mail-index-transaction-update.c +M src/lib-index/mail-index-transaction-view.c +M src/lib-index/mail-index-view-sync.c +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-view.c +M src/lib-index/test-mail-cache-purge.c +M src/lib-index/test-mail-index-transaction-update.c +M src/lib-mail/message-decoder.c +M src/lib-mail/message-parser.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-ssl-iostream/iostream-openssl-context.c +M src/lib-storage/index/cydir/cydir-save.c +M src/lib-storage/index/cydir/cydir-storage.c +M src/lib-storage/index/dbox-common/dbox-save.c +M src/lib-storage/index/dbox-multi/mdbox-mail.c +M src/lib-storage/index/dbox-multi/mdbox-storage.c +M src/lib-storage/index/dbox-single/sdbox-copy.c +M src/lib-storage/index/dbox-single/sdbox-storage.c +M src/lib-storage/index/imapc/imapc-list.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/imapc/imapc-mailbox.c +M src/lib-storage/index/imapc/imapc-save.c +M src/lib-storage/index/imapc/imapc-storage.c +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-search.c +M src/lib-storage/index/index-status.c +M src/lib-storage/index/index-storage.c +M src/lib-storage/index/maildir/maildir-filename-flags.c +M src/lib-storage/index/maildir/maildir-mail.c +M src/lib-storage/index/maildir/maildir-save.c +M src/lib-storage/index/maildir/maildir-sync-index.c +M src/lib-storage/index/maildir/maildir-uidlist.c +M src/lib-storage/index/mbox/mbox-save.c +M src/lib-storage/index/mbox/mbox-sync-update.c +M src/lib-storage/index/mbox/mbox-sync.c +M src/lib-storage/index/pop3c/pop3c-storage.c +M src/lib-storage/index/raw/raw-storage.c +M src/lib-storage/list/mailbox-list-fs-iter.c +M src/lib-storage/list/mailbox-list-index-backend.c +M src/lib-storage/list/mailbox-list-index-iter.c +M src/lib-storage/list/mailbox-list-index-status.c +M src/lib-storage/list/mailbox-list-index-sync.c +M src/lib-storage/list/mailbox-list-index.c +M src/lib-storage/list/mailbox-list-iter.c +M src/lib-storage/list/mailbox-list-maildir-iter.c +M src/lib-storage/list/mailbox-list-subscriptions.c +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage.c +M src/lib-storage/mailbox-attribute.c +M src/lib/askpass.c +M src/lib/fd-util.c +M src/lib/ioloop-poll.c +M src/lib/iostream-temp.c +M src/lib/net.c +M src/plugins/acl/acl-cache.c +M src/plugins/acl/acl-mailbox-list.c +M src/plugins/acl/acl-mailbox.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/fts-lucene/fts-backend-lucene.c +M src/plugins/fts-solr/fts-backend-solr.c +M src/plugins/lazy-expunge/lazy-expunge-plugin.c +M src/plugins/mail-crypt/fs-crypt-common.c +M src/plugins/quota/quota-storage.c +M src/plugins/replication/replication-plugin.c +M src/plugins/virtual/virtual-storage.c +M src/plugins/virtual/virtual-sync.c +M src/util/rawlog.c + +2020-09-23 14:51:53 +0300 Aki Tuomi (38a1c8fc8d) + + global: Use UOFF_T_MAX instead of (uoff_t)-1 + + +M src/anvil/anvil-settings.c +M src/auth/auth-settings.c +M src/config/config-settings.c +M src/dict/dict-settings.c +M src/director/director-settings.c +M src/dns/dns-client-settings.c +M src/doveadm/doveadm-settings.c +M src/doveadm/dsync/dsync-mail.h +M src/doveadm/dsync/dsync-mailbox-export.c +M src/doveadm/dsync/dsync-mailbox-import.c +M src/doveadm/dsync/dsync-transaction-log-scan.c +M src/imap-hibernate/imap-hibernate-settings.c +M src/imap-login/imap-login-settings.c +M src/imap-urlauth/imap-urlauth-login-settings.c +M src/imap-urlauth/imap-urlauth-settings.c +M src/imap-urlauth/imap-urlauth-worker-settings.c +M src/imap/cmd-append.c +M src/imap/imap-fetch-body.c +M src/imap/imap-settings.c +M src/indexer/indexer-settings.c +M src/indexer/indexer-worker-settings.c +M src/ipc/ipc-settings.c +M src/lda/main.c +M src/lib-compression/istream-bzlib.c +M src/lib-compression/istream-lzma.c +M src/lib-compression/istream-zlib.c +M src/lib-fs/fs-api.c +M src/lib-fs/fs-metawrap.c +M src/lib-fs/fs-posix.c +M src/lib-http/http-client-connection.c +M src/lib-http/http-header-parser.c +M src/lib-http/http-response-parser.c +M src/lib-http/http-server-request.c +M src/lib-http/test-http-payload.c +M src/lib-imap-storage/imap-msgpart-url.c +M src/lib-imap-storage/imap-msgpart.c +M src/lib-imap-storage/imap-msgpart.h +M src/lib-index/mail-index-map-hdr.c +M src/lib-index/mail-index-map-read.c +M src/lib-index/mail-index-sync-update.c +M src/lib-index/mail-index-sync.c +M src/lib-index/mail-index-view-sync.c +M src/lib-index/mail-transaction-log-file.c +M src/lib-index/mail-transaction-log-private.h +M src/lib-index/mail-transaction-log-view.c +M src/lib-index/mail-transaction-log.c +M src/lib-index/test-mail-transaction-log-view.c +M src/lib-mail/istream-attachment-connector.c +M src/lib-mail/istream-attachment-connector.h +M src/lib-mail/istream-header-filter.c +M src/lib-mail/test-istream-attachment.c +M src/lib-settings/settings-parser.c +M src/lib-smtp/smtp-command-parser.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-server-reply.c +M src/lib-smtp/test-smtp-payload.c +M src/lib-storage/index/dbox-common/dbox-file-fix.c +M src/lib-storage/index/dbox-common/dbox-file.c +M src/lib-storage/index/dbox-common/dbox-mail.c +M src/lib-storage/index/dbox-multi/mdbox-file.c +M src/lib-storage/index/imapc/imapc-mail-fetch.c +M src/lib-storage/index/imapc/imapc-mail.c +M src/lib-storage/index/index-mail-binary.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/istream-mail.c +M src/lib-storage/index/maildir/maildir-copy.c +M src/lib-storage/index/maildir/maildir-mail.c +M src/lib-storage/index/maildir/maildir-save.c +M src/lib-storage/index/maildir/maildir-uidlist.c +M src/lib-storage/index/mbox/istream-raw-mbox.c +M src/lib-storage/index/mbox/istream-raw-mbox.h +M src/lib-storage/index/mbox/mbox-mail.c +M src/lib-storage/index/mbox/mbox-save.c +M src/lib-storage/index/mbox/mbox-sync-parse.c +M src/lib-storage/index/mbox/mbox-sync-rewrite.c +M src/lib-storage/index/mbox/mbox-sync-update.c +M src/lib-storage/index/mbox/mbox-sync.c +M src/lib-storage/index/pop3c/pop3c-mail.c +M src/lib-storage/index/raw/raw-mail.c +M src/lib-storage/index/raw/raw-storage.c +M src/lib/file-cache.c +M src/lib/istream-concat.c +M src/lib/istream-failure-at.c +M src/lib/istream-limit.c +M src/lib/istream-private.h +M src/lib/istream-seekable.c +M src/lib/istream-tee.c +M src/lib/istream.c +M src/lib/ostream-file.c +M src/lib/ostream.h +M src/lib/strnum.c +M src/lib/test-iostream-temp.c +M src/lib/test-istream-concat.c +M src/lib/test-istream-sized.c +M src/lib/test-istream.c +M src/lmtp/lmtp-client.c +M src/lmtp/lmtp-proxy.c +M src/lmtp/lmtp-settings.c +M src/log/log-settings.c +M src/master/master-settings.c +M src/master/service.c +M src/old-stats/stats-settings.c +M src/plugins/fts-squat/squat-uidlist.c +M src/plugins/mail-crypt/mail-crypt-plugin.c +M src/plugins/pop3-migration/pop3-migration-plugin.c +M src/plugins/quota/quota-maildir.c +M src/plugins/zlib/zlib-plugin.c +M src/pop3-login/pop3-login-settings.c +M src/pop3/pop3-commands.c +M src/pop3/pop3-settings.c +M src/replication/aggregator/aggregator-settings.c +M src/replication/replicator/replicator-settings.c +M src/stats/stats-settings.c +M src/submission-login/submission-login-settings.c +M src/submission/submission-settings.c +M src/util/health-check-settings.c +M src/util/tcpwrap-settings.c + +2020-09-23 14:43:29 +0300 Aki Tuomi (e80cfb62b6) + + global: Use SIZE_MAX instead of (size_t)-1 + + +M src/anvil/anvil-connection.c +M src/auth/auth-client-connection.c +M src/auth/auth-master-connection.c +M src/auth/auth-settings.c +M src/auth/auth-worker-client.c +M src/auth/auth-worker-server.c +M src/auth/db-passwd-file.c +M src/auth/mech-gssapi.c +M src/auth/mech-winbind.c +M src/auth/userdb-passwd-file.c +M src/config/config-connection.c +M src/config/config-parser.c +M src/config/config-request.c +M src/dict/dict-settings.c +M src/director/auth-connection.c +M src/director/director-settings.c +M src/director/director-test.c +M src/director/director.c +M src/director/doveadm-connection.c +M src/director/login-connection.c +M src/dns/dns-client.c +M src/doveadm/client-connection-tcp.c +M src/doveadm/doveadm-director.c +M src/doveadm/doveadm-dsync.c +M src/doveadm/doveadm-dump-dbox.c +M src/doveadm/doveadm-dump-log.c +M src/doveadm/doveadm-log.c +M src/doveadm/doveadm-oldstats.c +M src/doveadm/doveadm-penalty.c +M src/doveadm/doveadm-replicator.c +M src/doveadm/doveadm-settings.c +M src/doveadm/doveadm-stats.c +M src/doveadm/doveadm-who.c +M src/doveadm/doveadm-zlib.c +M src/doveadm/server-connection.c +M src/imap-hibernate/imap-hibernate-client.c +M src/imap-hibernate/imap-master-connection.c +M src/imap-login/imap-login-settings.c +M src/imap-urlauth/imap-urlauth-client.c +M src/imap-urlauth/imap-urlauth-login-settings.c +M src/imap-urlauth/imap-urlauth-settings.c +M src/imap-urlauth/imap-urlauth-worker-settings.c +M src/imap-urlauth/imap-urlauth-worker.c +M src/imap/cmd-getmetadata.c +M src/imap/cmd-urlfetch.c +M src/imap/imap-client.c +M src/imap/imap-fetch-body.c +M src/imap/imap-master-client.c +M src/imap/imap-settings.c +M src/indexer/indexer-client.c +M src/indexer/master-connection.c +M src/indexer/worker-connection.c +M src/ipc/client.c +M src/ipc/ipc-connection.c +M src/lib-auth/auth-client-connection.c +M src/lib-charset/charset-iconv.c +M src/lib-dcrypt/dcrypt-openssl.c +M src/lib-dcrypt/ostream-encrypt.c +M src/lib-dict/dict-client.c +M src/lib-dict/dict-file.c +M src/lib-dict/dict-memcached-ascii.c +M src/lib-dict/dict-memcached.c +M src/lib-dict/dict-redis.c +M src/lib-dns/dns-lookup.c +M src/lib-dns/dns-util.c +M src/lib-fs/fs-test.c +M src/lib-http/http-client-connection.c +M src/lib-http/http-client-request.c +M src/lib-http/http-message-parser.c +M src/lib-http/http-server-connection.c +M src/lib-http/http-server-response.c +M src/lib-http/test-http-client-errors.c +M src/lib-http/test-http-payload.c +M src/lib-http/test-http-server-errors.c +M src/lib-imap-client/imapc-client.h +M src/lib-imap-client/imapc-connection.c +M src/lib-imap-client/test-imapc-client.c +M src/lib-imap-storage/imap-msgpart.c +M src/lib-imap-urlauth/imap-urlauth-connection.c +M src/lib-imap/imap-bodystructure.c +M src/lib-imap/imap-envelope.c +M src/lib-imap/imap-id.c +M src/lib-index/mail-cache-transaction.c +M src/lib-index/mail-index-fsck.c +M src/lib-index/mail-index-strmap.c +M src/lib-index/mail-index-transaction-update.c +M src/lib-index/mail-transaction-log-append.c +M src/lib-index/mail-transaction-log-file.c +M src/lib-lda/lda-settings.c +M src/lib-mail/istream-header-filter.c +M src/lib-mail/qp-decoder.c +M src/lib-mail/test-istream-dot.c +M src/lib-master/anvil-client.c +M src/lib-master/ipc-client.c +M src/lib-master/ipc-server.c +M src/lib-master/master-instance.c +M src/lib-master/master-login-auth.c +M src/lib-master/master-login.c +M src/lib-master/master-service-settings-cache.c +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-ssl-settings.c +M src/lib-master/stats-client.c +M src/lib-master/test-event-stats.c +M src/lib-master/test-master-service-settings-cache.c +M src/lib-oauth2/test-oauth2-jwt.c +M src/lib-program-client/program-client.c +M src/lib-program-client/test-program-client-net.c +M src/lib-program-client/test-program-client-unix.c +M src/lib-settings/settings-parser.c +M src/lib-settings/settings.c +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client.h +M src/lib-smtp/smtp-reply-parser.c +M src/lib-smtp/smtp-server-connection.c +M src/lib-smtp/smtp-submit-settings.c +M src/lib-smtp/test-smtp-client-errors.c +M src/lib-smtp/test-smtp-server-errors.c +M src/lib-smtp/test-smtp-submit.c +M src/lib-sql/sql-api.c +M src/lib-ssl-iostream/istream-openssl.c +M src/lib-storage/index/dbox-common/dbox-file.c +M src/lib-storage/index/dbox-multi/mdbox-purge.c +M src/lib-storage/index/dbox-multi/mdbox-settings.c +M src/lib-storage/index/imapc/imapc-settings.c +M src/lib-storage/index/maildir/maildir-settings.c +M src/lib-storage/index/maildir/maildir-uidlist.c +M src/lib-storage/index/mbox/istream-raw-mbox.c +M src/lib-storage/index/mbox/mbox-settings.c +M src/lib-storage/index/mbox/mbox-sync-parse.c +M src/lib-storage/index/mbox/mbox-sync-rewrite.c +M src/lib-storage/index/mbox/mbox-sync-update.c +M src/lib-storage/index/pop3c/pop3c-client.c +M src/lib-storage/index/pop3c/pop3c-settings.c +M src/lib-storage/mail-storage-settings.c +M src/lib-test/test-istream.c +M src/lib-test/test-ostream.c +M src/lib/array.c +M src/lib/array.h +M src/lib/buffer.c +M src/lib/buffer.h +M src/lib/file-cache.c +M src/lib/istream-data.c +M src/lib/istream-seekable.c +M src/lib/istream-tee.c +M src/lib/mempool-system.c +M src/lib/ostream-buffer.c +M src/lib/ostream-wrapper.c +M src/lib/strfuncs.c +M src/lib/test-buffer-istream.c +M src/lib/test-buffer.c +M src/lib/test-connection.c +M src/lib/test-file-cache.c +M src/lib/test-iostream-pump.c +M src/lib/test-istream-multiplex.c +M src/lib/test-multiplex.c +M src/lib/test-ostream-buffer.c +M src/lib/test-ostream-multiplex.c +M src/lib/unichar.c +M src/lib/uri-util.c +M src/lmtp/lmtp-settings.c +M src/log/doveadm-connection.c +M src/login-common/login-proxy.c +M src/login-common/login-settings.c +M src/master/master-settings.c +M src/master/test-auth-client.c +M src/master/test-auth-master.c +M src/master/test-master-login-auth.c +M src/old-stats/client.c +M src/old-stats/global-memory.c +M src/old-stats/stats-settings.c +M src/plugins/acl/acl-backend-vfile-acllist.c +M src/plugins/acl/acl-backend-vfile.c +M src/plugins/acl/acl-global-file.c +M src/plugins/fts-squat/squat-test.c +M src/plugins/fts/fts-expunge-log.c +M src/plugins/mail-crypt/fs-crypt-common.c +M src/plugins/mail-crypt/fs-crypt-settings.c +M src/plugins/quota/quota-status-settings.c +M src/plugins/quota/quota-status.c +M src/plugins/trash/trash-plugin.c +M src/plugins/virtual/virtual-config.c +M src/pop3-login/pop3-login-settings.c +M src/pop3/pop3-client.c +M src/pop3/pop3-settings.c +M src/replication/aggregator/aggregator-settings.c +M src/replication/aggregator/notify-connection.c +M src/replication/aggregator/replicator-connection.c +M src/replication/replicator/doveadm-connection.c +M src/replication/replicator/dsync-client.c +M src/replication/replicator/notify-connection.c +M src/replication/replicator/replicator-queue.c +M src/replication/replicator/replicator-settings.c +M src/stats/client-reader.c +M src/stats/client-writer.c +M src/stats/stats-settings.c +M src/stats/test-client-reader.c +M src/stats/test-client-writer.c +M src/submission-login/submission-login-settings.c +M src/submission/submission-settings.c +M src/util/rawlog.c + +2020-08-11 08:41:54 +0300 Aki Tuomi (3698334932) + + lib: macros - Add ENUM_NEGATE + + Handles enumeration flag negation. + +M src/lib/macros.h + +2020-07-28 13:42:01 +0300 Aki Tuomi (55c6d609aa) + + configure: Add ubsan support + + +M m4/dovecot.m4 +M src/lib/macros.h + +2020-09-23 14:39:36 +0300 Aki Tuomi (15318d2780) + + lib-mail: test-message-header-hash: Fix type issue + + Satisfies runtime analyzer. + +M src/lib-mail/test-message-header-hash.c + +2020-09-22 14:39:41 +0300 Aki Tuomi (e32650c399) + + doveadm: mailbox status - Handle first_save_date correctly + + If first_save_date is -1 it means no save has been done. + +M src/doveadm/doveadm-mail-mailbox-status.c + +2020-08-20 08:57:35 +0300 Aki Tuomi (309b3ceba0) + + lib: unichar - Change uni_utf8_char_bytes to accept unsigned char + + +M src/lib-imap/imap-utf7.c +M src/lib/unichar.h + +2020-09-01 09:57:04 +0300 Aki Tuomi (fa3b53798c) + + lib-index: Use SIZE_MAX with str_sanitize + + +M src/lib-index/mail-index-map.c +M src/lib-index/mail-index.c + +2020-09-01 09:57:23 +0300 Aki Tuomi (b8c83f6061) + + auth: password-scheme - Use UINT_MAX when calling password_generate_otp + + +M src/auth/password-scheme.c + +2020-09-01 11:54:50 +0300 Aki Tuomi (3aed1e852a) + + lib: mempool-allocfree - Do not use PTR_OFFSET with negative offset + + Avoids undefined behaviour sanitization error. + +M src/lib/mempool-allocfree.c + +2020-09-01 11:56:42 +0300 Aki Tuomi (f5af22d2c8) + + lib-fts: test-fts-tokenizer - Change test_chars to unsigned char + + +M src/lib-fts/test-fts-tokenizer.c + +2020-08-20 09:46:24 +0300 Aki Tuomi (f2e4eed824) + + lib: str - Ensure str_append_c gets unsigned char parameter + + +M src/lib/str.h + +2020-10-01 11:37:24 +0300 Timo Sirainen (f4ab2fc962) + + lib: seq-range-array - Assert-crash if array becomes 0..(uint32_t)-1 + + +M src/lib/seq-range-array.c +M src/lib/seq-range-array.h +M src/lib/test-lib.inc +M src/lib/test-seq-range-array.c + +2020-10-01 11:19:33 +0300 Timo Sirainen (588c3b9637) + + lib: seq_range_array_add() - Reorder code flow + + +M src/lib/seq-range-array.c + +2020-10-01 11:18:04 +0300 Timo Sirainen (1c7ae79d97) + + lib: seq-range-array - Split off seq_range_array_add_slow_path() + + +M src/lib/seq-range-array.c + +2020-10-01 11:04:56 +0300 Timo Sirainen (1203cd16ad) + + lib: seq-range-array - Use seq_range_length() internally + + +M src/lib/seq-range-array.c + +2020-10-01 11:04:36 +0300 Timo Sirainen (c1a5cbb9da) + + lib: seq_range_length() - Use const pointer + + +M src/lib/seq-range-array.h + +2020-10-20 15:02:24 +0300 Martti Rannanjärvi (6752ab40f6) + + doc: Include dovecot-oauth2.conf.ext in dist tarball + + +M doc/example-config/Makefile.am + +2020-10-12 23:29:02 +0200 Stephan Bosch (7f1738a772) + + doveadm-server: Fix STARTTLS support. + + +M src/doveadm/main.c + +2020-10-13 22:56:25 +0200 Stephan Bosch (4b90fbfcc3) + + lib-master: master-service-ssl - Make context initialization error more + useful. + + This improves the error in case SSL is disabled; other causes still yield a + rather unhelpful error message. + +M src/lib-master/master-service-ssl.c + +2020-10-12 23:18:09 +0200 Stephan Bosch (c2e5d7fdfb) + + lib: ostream-multiplex - Fix dead assignment by adding an assertion on the + result. + + Found by Clang scan-build. + +M src/lib/ostream-multiplex.c + +2020-10-07 00:06:08 +0200 Stephan Bosch (904d96418a) + + global: Fix dead assignments in expressions. + + Found by Clang scan-build. + +M src/auth/db-lua.c +M src/lib-sql/driver-cassandra.c +M src/lib/ostream-wrapper.c +M src/plugins/mail-lua/mail-lua-plugin.c +M src/plugins/mail-lua/mail-storage-lua.c +M src/plugins/push-notification/push-notification-driver-lua.c + +2020-10-08 13:48:45 +0200 raphael-walther <48209673+raphael-walther@users.noreply.github.com> (9a8ebce905) + + man: Update doveadm-search-query.7 + + TEXT searches also from headers, not just body. + +M doc/man/doveadm-search-query.7 + +2020-10-07 17:48:06 +0200 jonmoesli <69861248+jonmoesli@users.noreply.github.com> (f0c15f2d6c) + + director: Fix error message when director_username_hash expansion fails + + +M src/director/director.c + +2020-10-09 14:58:54 +0300 Timo Sirainen (787cc98cf8) + + lib-storage: Fix potential assert-crash when adding missing attachment + keywords + + Broken by aab71c35259f542d9ba46b4b5b24eff0016b802e + + Fixes: Panic: file index-mail.c: line 1241 (index_mail_parse_body): + assertion failed: (data->parser_ctx != NULL) + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c + +2020-10-08 10:41:52 +0300 Timo Sirainen (4c4377e82e) + + lib: json-parser - Fix skipping strings with non-blocking input + + The skipping could have accessed memory outside the allocated string. This + might have resulted in a crash, or caused JSON parsing to fail. + +M src/lib/json-parser.c + +2020-09-16 05:06:12 +0200 Stephan Bosch (8608c26908) + + lib-mail: test-message-header-decode - Add random encode/decode tests for 8 + bit data. + + This also tests handling of (broken) UTF-8 input. + +M src/lib-mail/test-message-header-decode.c + +2020-09-16 04:31:58 +0200 Stephan Bosch (b37dcca4fb) + + lib-mail: test-message-header-encode - Add tests for broken UTF-8 in input. + + +M src/lib-mail/test-message-header-encode.c + +2020-09-17 12:17:44 +0200 Stephan Bosch (5f35cab966) + + lib-mail: test-message-header-encode - Check maximum line length with long + printable text and whitespace. + + +M src/lib-mail/test-message-header-encode.c + +2020-09-17 01:26:13 +0200 Stephan Bosch (05e84eb74c) + + lib-mail: message-header-encode - Update function descriptions. + + +M src/lib-mail/message-header-encode.h + +2020-09-16 03:21:30 +0200 Stephan Bosch (617b1beaa3) + + lib-mail: Properly handle bad UTF-8 in message_header_encode_b(). + + Broken characters are substituted with a replacement character. + +M src/lib-mail/message-header-encode.c + +2020-09-16 03:19:34 +0200 Stephan Bosch (e73eafc68b) + + lib-mail: Properly handle bad UTF-8 in message_header_encode_q(). + + Broken characters are substituted with a replacement character. + +M src/lib-mail/message-header-encode.c + +2020-09-16 03:10:12 +0200 Stephan Bosch (de56f9152b) + + lib-mail: message-header-encode - Return immediately when len == 0 in + message_header_encode_b/q(). + + Just to make sure. This shouldn't happen in the first place. + +M src/lib-mail/message-header-encode.c + +2020-09-16 03:05:30 +0200 Stephan Bosch (894e088f92) + + lib-mail: message-header-encode - Use size_t for length/size variables and + parameters. + + +M src/lib-mail/message-header-encode.c +M src/lib-mail/message-header-encode.h + +2020-09-17 01:33:52 +0200 Stephan Bosch (2d35de6b65) + + lib-mail: message-header-encode - Fix encoding of 0x7F byte for Q encoding. + + It was not escaped. + +M src/lib-mail/message-header-encode.c +M src/lib-mail/test-message-header-decode.c + +2020-09-17 01:41:41 +0200 Stephan Bosch (6832846c8c) + + lib-mail: test-message-header-decode - Use test_assert_idx(). + + +M src/lib-mail/test-message-header-decode.c + +2020-09-16 18:28:43 +0200 Stephan Bosch (154602378a) + + lib-mail: test-message-header-decode - Avoid generating random bytes that + are never used. + + +M src/lib-mail/test-message-header-decode.c + +2020-09-17 12:24:40 +0200 Stephan Bosch (9bd6007d8b) + + lib-mail: test-message-header-decode - Use test_assert_strcmp(). + + +M src/lib-mail/test-message-header-decode.c + +2020-09-17 12:23:06 +0200 Stephan Bosch (0b5206d887) + + lib-mail: test-message-header-encode - Use test_assert_strcmp(). + + +M src/lib-mail/test-message-header-encode.c + +2020-09-16 01:03:53 +0200 Stephan Bosch (334cd2fc22) + + lib: base64 - Add base64_encode_get_full_space(). + + This translates the space in the destination buffer to the number of bytes + that can be encoded at most to complete the full base64 encoding, including + padding and newlines if configured. + +M src/lib/base64.c +M src/lib/base64.h +M src/lib/test-base64.c + +2020-09-16 01:02:22 +0200 Stephan Bosch (dd8408a50e) + + lib: base64 - Fix return value of base64_encode_more(). + + It didn't properly return TRUE when all input data was consumed. + +M src/lib/base64.c +M src/lib/test-base64.c + +2020-09-16 23:19:19 +0200 Stephan Bosch (2eaa4e3fd3) + + lib: test-base64 - Add test for base64_encode_get_size() in random lowlevel + streaming tests. + + +M src/lib/test-base64.c + +2020-09-16 23:20:32 +0200 Stephan Bosch (375332aa5f) + + lib: test-base64 - Abort random lowlevel test case early when something + failed already. + + +M src/lib/test-base64.c + +2020-09-16 00:37:45 +0200 Stephan Bosch (c830037f8c) + + lib: unichar - Add length definitions for replacement and ellipsis + characters. + + +M src/lib/unichar.h + +2020-05-06 13:15:34 +0300 Timo Sirainen (1cf8040306) + + lib: json-parser - Fix parsing \uXXXX in non-blocking input + + If it was in the istream's read boundary it resulted as parsing error. + +M src/lib/json-parser.c +M src/lib/test-json-parser.c + +2020-05-06 13:01:41 +0300 Timo Sirainen (c4beabf43f) + + lib: json-parser - Fix error message for invalid escape sequence + + +M src/lib/json-parser.c + +2020-05-06 12:54:13 +0300 Timo Sirainen (7d74329816) + + lib: json-parser - Don't allocate errors from data stack + + There's no guarantee that the json-parser's life time is within the same + data stack frame. + +M src/lib/json-parser.c + +2020-05-06 12:38:22 +0300 Timo Sirainen (a4057ea644) + + lib: json-parser - Fail if strings contain NULs + + Previous behavior was to just truncate the string, which could be worse than + failing entirely. + +M src/lib/json-parser.c +M src/lib/test-json-parser.c + +2020-09-23 01:59:27 +0200 Stephan Bosch (4d09884528) + + lib-http: test-http-client-errors - Add unit test for host idle timeout. + + This test involves retrying a request that failed host lookup, which used to + cause the request to be erroneously aborted. + +M src/lib-http/test-http-client-errors.c + +2020-09-21 01:14:20 +0200 Stephan Bosch (ac4173fa38) + + lib-http: http-client-host - Prevent erroneously starting host idle timeout + during request retry. + + During request retry the request is first dropped from and subsequently + added to the queue. Dropping a request from the queue can start the host + idle timeout when it is the very last one. The timeout was not removed later + on anymore when the request was submitted again, because it was added + prematurely (before dropping the request). + +M src/lib-http/http-client-host.c + +2020-09-20 23:16:00 +0200 Stephan Bosch (29f3be1af8) + + lib-http: http-client-host - Fix determination of whether host is idle. + + +M src/lib-http/http-client-host.c + +2020-09-22 22:12:27 +0200 Stephan Bosch (c701368bef) + + lib-http: http-client-host - Make sure DNS lookup is performed when host has + no IPs. + + This fixes at least one panic: + + Panic: file ./http-client-private.h: line 679 (http_client_host_get_ip): + assertion failed: (idx < host->shared->ips_count) + +M src/lib-http/http-client-host.c + +2020-08-26 11:31:01 +0300 Timo Sirainen (bf1c45440a) + + auth: Fix potential read buffer overflow in PLAIN mechanism + + The overflow could have crashed the auth process in theory, although + practically it doesn't seem to happen. + +M src/auth/mech-plain.c +M src/auth/test-mech.c + +2020-08-26 11:42:02 +0300 Timo Sirainen (e29ce296cf) + + auth: test-mech - Allocate test input explicitly + + This way valgrind will catch if there are read buffer overflows. + +M src/auth/test-mech.c + +2020-04-01 17:22:04 +0300 Timo Sirainen (c394c60959) + + lib-index: Fix DEBUG assert to not trigger on transaction resets + + Fixes a crash in test-mail-index when compiled --with-devel-checks: + + Panic: file mail-index-transaction.c: line 211 + (mail_index_transaction_commit_real): assertion failed: + (expected_highest_modseq == log->head->sync_highest_modseq) + +M src/lib-index/mail-index-transaction.c + +2020-09-17 15:43:02 -0400 Josef 'Jeff' Sipek (372a88e701) + + login-common: Include the proxy's source address in log messages + + +M src/login-common/client-common-auth.c + +2020-09-17 15:42:52 -0400 Josef 'Jeff' Sipek (c066b7d60d) + + login-common: Move common client info logging into a helper function + + +M src/login-common/client-common-auth.c + +2020-09-17 14:19:46 -0400 Josef 'Jeff' Sipek (cd8a50c686) + + login-common: Add login_proxy_get_source_host() to get the local proxy + hostname + + +M src/login-common/login-proxy.c +M src/login-common/login-proxy.h + +2020-09-17 10:45:44 -0400 Josef 'Jeff' Sipek (bd8eadf128) + + login-common: Heap allocate login source IPs array to avoid use-after-free + + By default, the service init code runs with a temporary datastack frame that + gets freed at the end of initialization to get rid of any temporary + allocations made during init before the long-running part of the process + executes. + +M src/login-common/main.c + +2020-09-18 14:55:27 +0300 sergey.kitov (4740d48ba3) + + man: update doveadm-proxy man page with kick -h option. + + +M doc/man/doveadm-proxy.1.in +M src/login-common/login-proxy.c + +2020-09-15 15:52:24 +0300 sergey.kitov (0f889378f5) + + doveadm: Implement proxy kick -h + + +M src/doveadm/doveadm-proxy.c + +2020-09-15 15:51:26 +0300 sergey.kitov (30a816a360) + + login-common: Implement kicking all user at backend host. + + +M src/login-common/login-proxy.c + +2020-09-17 13:51:36 +0300 sergey.kitov (62e8fe8c4e) + + login-common: change want_kick signature from (struct *client, ...) to + (struct *login_proxy, ...) + + +M src/login-common/login-proxy.c + +2020-09-25 10:43:39 +0300 sergey.kitov (10f534e0f2) + + login-common: Put proxy looping on stack in login_proxy_cmd_kick_full() + + +M src/login-common/login-proxy.c + +2020-06-24 11:20:25 +0200 Stephan Bosch (517080d0f3) + + lib-smtp: smtp-server-connection - Ignore replied command for pipeline limit + calculation. + + This prevents failed commands with payload from blocking the input pipeline. + This caused a hang before. + +M src/lib-smtp/smtp-server-connection.c + +2020-06-24 11:15:55 +0200 Stephan Bosch (95edff15c1) + + lib-smtp: smtp-server-connection - Use connection settings for command + pipeline limit. + + It used the top-level server settings before. + +M src/lib-smtp/smtp-server-connection.c + +2020-06-24 11:13:59 +0200 Stephan Bosch (0dcc8f0556) + + lib-smtp: smtp-server-connection - Move pipeline limit check to separate + function. + + +M src/lib-smtp/smtp-server-connection.c + +2020-06-24 10:45:38 +0200 Stephan Bosch (e1009a8641) + + lib-smtp: smtp-server-command - Always end input lock/capture upon reply + submission. + + +M src/lib-smtp/smtp-server-command.c + +2020-06-24 10:42:17 +0200 Stephan Bosch (d6ec5245d4) + + lib-smtp: smtp-server-command - Reliably end input capture in + smtp_server_command_input_unlock(). + + +M src/lib-smtp/smtp-server-command.c + +2020-09-17 13:09:54 +0300 Timo Sirainen (3fa7052a5d) + + lib-storage: Rename mail_attachment_detection_options=add-flags-on-save to + add-flags + + Keep add-flags-on-save for backwards compatibility. + +M doc/example-config/conf.d/10-mail.conf +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail-storage-settings.c +M src/lib-storage/mail-storage-settings.h +M src/lib-storage/mail-storage.c + +2020-09-04 01:58:58 +0300 Timo Sirainen (aab71c3525) + + lib-storage: Try to add missing attachment flags when opening mail stream + + Since the message body is being opened in any case, it's pretty inexpensive + to add missing attachment flags. Do this only when + mail_attachment_detection_options has add-flags-on-save but no + no-flags-on-fetch. + +M src/lib-storage/index/index-mail.c + +2020-09-10 16:38:11 +0300 Timo Sirainen (194dcaa65c) + + lib-storage: Try to add missing attachment flags when fetching MIME parts or + BODYSTRUCTURE + + This happens only if both mime.parts and imap.bodystructure are already in + cache and mail_attachment_detection_options has add-flags-on-save but no + no-flags-on-fetch. The no-flags-on-fetch option may be removed in a future + release once it's known that it's not causing any unexpected performance + issues. + +M src/lib-storage/index/index-mail.c +M src/lib-storage/mail-storage-settings.c +M src/lib-storage/mail-storage-settings.h + +2020-09-10 16:36:14 +0300 Timo Sirainen (52a0f91840) + + lib-storage: index_mail_get_cached_bodystructure() - Reorder the if + statements + + Simplifies the following commit. + +M src/lib-storage/index/index-mail.c + +2020-09-10 16:32:35 +0300 Timo Sirainen (74ab5e62e0) + + lib-storage: Avoid initializing stream multiple times recursively + + This fixes the situation where stream opening causes it to be re-opened by + index_mail_parse_headers(). There are some other more rare situations, but + they're in error handling code paths. + +M src/lib-storage/index/index-mail-headers.c +M src/lib-storage/index/index-mail.c +M src/lib-storage/index/index-mail.h + +2020-09-10 16:21:17 +0300 Timo Sirainen (f4f1c0a1b6) + + lib-storage: Avoid caching size.physical unless it's explicitly asked for + + It's internally requested in a few places, but only as an optimization if it + happens to exist. It's not important enough that it should affect caching + decisions. + + This change becomes more important after the following changes, which cause + size.physical to be added unnecessarily when filling out attachment flags. + +M src/lib-storage/index/index-mail.c + +2020-09-22 20:00:17 +0200 Stephan Bosch (778811a3e6) + + lib-http: http-client-host - Do not prematurely reset ips_count to zero. + + It causes problems with existing connection attempts. + + Panic was: + + Panic: file http-client-queue.c: line 215 + (http_client_queue_is_last_connect_ip): assertion failed: + (queue->ips_connect_idx < ips_count) + +M src/lib-http/http-client-host.c + +2020-09-23 02:04:20 +0200 Stephan Bosch (dff9d4719f) + + lib-http: http-client-host - Log debug message for failed DNS lookup. + + If the host has no requests, nothing is logged about the failure otherwise. + +M src/lib-http/http-client-host.c + +2020-09-22 19:58:59 +0200 Stephan Bosch (1c9264909c) + + lib-http: http-client-host - Move DNS lookup success handling to a common + function. + + +M src/lib-http/http-client-host.c + +2020-09-21 00:38:11 +0200 Stephan Bosch (a01eae05bb) + + lib-http: Reformat http-client-host.c. + + +M src/lib-http/http-client-host.c + +2020-09-28 15:26:27 -0400 ihsinme <61293369+ihsinme@users.noreply.github.com> (9ca475537e) + + lib-mail: html2text - Fix buffer out-of-bounds access + + The passed in buffer size is at least 1 byte shorter than the actual buffer + size, therefore there is no chance of a crash. + +M src/lib-mail/mail-html2text.c + +2020-08-15 00:56:36 +0300 Timo Sirainen (645a30a6c7) + + dict-sql: Fix crash if dict iteration is destroyed early + + If the iteration callback is still called after the iterator is freed, the + callback accesses freed memory and crashes. + +M src/lib-dict-backend/dict-sql.c + +2020-09-12 00:20:51 +0200 Stephan Bosch (dba3d86625) + + lib-smtp: test-smtp-command-parser - Add tests for input ending in partial + UTF-8 sequences. + + +M src/lib-smtp/test-smtp-command-parser.c + +2020-09-12 00:19:14 +0200 Stephan Bosch (4e24c1a705) + + lib-smtp: test-smtp-command-parser - Test parsing commands from input that + comes in gradually. + + +M src/lib-smtp/test-smtp-command-parser.c + +2020-09-12 00:15:35 +0200 Stephan Bosch (77903cf3a3) + + lib-smtp: smtp-command-parser - Fix parameter parsing not to fail on + particular unicode code points. + + Unicode code points were sometimes erroneously checked as ASCII characters. + +M src/lib-smtp/smtp-command-parser.c + +2020-09-11 21:53:06 +0200 Stephan Bosch (1ae3ca2988) + + lib-smtp: smtp-command-parser - Fix read past buffer limit while parsing + UTF-8 character. + + The buffer limit was specified as (buf->pos - buf->end) rather than + (buf->end - buf->pos). Since at most a valid UTF-8 character can be read + beyond the buffer size, this bug didn't cause noticeable effects, nor does + it present an attack surface. + +M src/lib-smtp/smtp-command-parser.c + +2020-09-11 23:54:29 +0200 Stephan Bosch (2ec6f2f75b) + + lib-smtp: Reformat test-smtp-command-parser.c. + + +M src/lib-smtp/test-smtp-command-parser.c + +2020-09-11 22:57:58 +0200 Stephan Bosch (853b233469) + + lib-smtp: Reformat smtp-command-parser.c. + + +M src/lib-smtp/smtp-command-parser.c + +2020-08-31 20:38:42 +0300 Timo Sirainen (a668d767a7) + + lib-mail: message_parser_init_from_parts() - Fix crash if MIME boundaries + don't end + + If the last "boundary--" doens't exist, the parsing assert-crashed at + deinit. This mainly happened when searching mails. + + Fixes: Panic: file message-parser.c: line 175 (message_part_finish): + assertion failed: (ctx->nested_parts_count > 0) + +M src/lib-mail/message-parser.c +M src/lib-mail/test-message-parser.c + +2020-08-28 18:35:00 +0300 Timo Sirainen (86e1953d07) + + acl: Ignore acl_object_list_deinit() error when copying ACLs from parent + + There's already a FIXME, and this makes static analyzer happier. + +M src/plugins/acl/acl-mailbox.c + +2020-08-13 11:38:07 +0300 Timo Sirainen (007e1ff1c5) + + director: Explicitly ignore array_bsearch_insert_pos() return value + + Makes static analyzers happier. + +M src/director/mail-host.c + +2020-08-13 11:29:38 +0300 Timo Sirainen (15e7385f69) + + lib: test-istream - Check or explicitly ignore i_stream_read() return value + + Makes static analyzers happier. + +M src/lib/test-istream.c + +2020-08-12 11:05:55 +0300 Timo Sirainen (51ed74c63f) + + lib-ssl-iostream: Fix error message with invalid ciphersuites + + The error message contained curve_list's value, not ciphersuites' value. + +M src/lib-ssl-iostream/iostream-openssl-context.c + +2020-09-14 17:44:58 +0300 Timo Sirainen (ffd2fdd8d8) + + lib-compression: test-compression - Fix memory leak + + +M src/lib-compression/test-compression.c + +2020-09-14 10:37:16 +0300 Timo Sirainen (8655329e14) + + lib: Add a comment about o_stream_create_buffer() + + +M src/lib/ostream.h + +2020-09-14 10:28:41 +0300 Timo Sirainen (d2054a3115) + + lib: ostream-buffer - Revert returning 0 as used buffer size + + This change broke at least one external plugin that assumed the original + behavior. Safer to just revert this change. + + Reverts 48083d9e7fdbe257b0be33043ecf0ca87489eef9 + +M src/lib/ostream-buffer.c +M src/lib/test-ostream-buffer.c + +2020-09-14 10:27:26 +0300 Timo Sirainen (0416a3fdc0) + + lib-compression: test-compression - Convert from ostream-buffer to + iostream-temp + + Using ostream-buffer required 48083d9e7fdbe257b0be33043ecf0ca87489eef9 + change, but this broke some code that assumed the original behavior. + +M src/lib-compression/test-compression.c + +2020-09-11 23:28:47 +0300 Aki Tuomi (c2eee2e4bc) + + lib-compression: test-compression - Use datastack in test + + Plugs a memory leak. + + Broken in 60b4040ba498ce7b19fc8b189d327cc606856f07 + +M src/lib-compression/test-compression.c + +2020-09-11 14:29:14 +0300 Timo Sirainen (71c3938bca) + + lib-fs: test-fs-async - Fix to work properly after previous changes + + It's an async test, so it should expect that the fs actually behaves + asynchronously. + +M src/lib-fs/fs-test-async.c + +2020-09-11 14:28:11 +0300 Timo Sirainen (31d7b252df) + + lib-dict: dict_switch_ioloop() - Move also failure timeout + + Forgotten in 178bb676ea1dd380789d3587bf5e64fd85a29d7a + +M src/lib-dict/dict.c + +2020-08-21 14:31:12 -0400 Josef 'Jeff' Sipek (0bcdf2217a) + + stats: event exporter - Use category exporting helper to avoid duplicates + (tabtext) + + +M src/stats/event-exporter-fmt-tab-text.c + +2020-08-21 14:23:50 -0400 Josef 'Jeff' Sipek (de4d3eb974) + + stats: event exporter - Use category exporting helper to avoid duplicates + (json) + + +M src/stats/event-exporter-fmt-json.c + +2020-08-21 14:23:14 -0400 Josef 'Jeff' Sipek (eb4c8a9a5a) + + stats: Add helper to append category names without duplicates + + +M src/stats/event-exporter-fmt.c +M src/stats/event-exporter.h + +2020-08-28 18:36:47 +0300 Timo Sirainen (6f42f48bd3) + + lib: net_listen|connect_unix() - Use consistent error handling for too long + paths + + The errno should be the same for both functions. Prefer ENAMETOOLONG if it + exists on the OS, otherwise fallback to EOVERFLOW. + +M src/lib/net.c +M src/lib/test-net.c + +2020-09-11 08:22:11 +0300 Aki Tuomi (1f2ac2afaa) + + lib-dict: dict - Keep track of next commit in dict_wait + + Satisfies static analyser, broken in + 178bb676ea1dd380789d3587bf5e64fd85a29d7a + +M src/lib-dict/dict.c + +2020-09-10 17:56:49 +0300 Aki Tuomi (b4a048914a) + + lib-dict: dict - Ensure there are no commits during deinit + + +M src/lib-dict/dict.c + +2020-09-10 17:43:06 +0300 Aki Tuomi (24aca7088f) + + lib-dict: dict - Allow calling callback immediately + + Make callback calls the next callback immediately, instead of adding a + timeout that calls the callback. + + Forgotten in 178bb676ea1dd380789d3587bf5e64fd85a29d7a + +M src/lib-dict/dict.c + +2020-09-10 17:42:19 +0300 Aki Tuomi (5db10b21b3) + + lib-dict: dict - Change background to delayed_callback + + It better describes what it's intended to do. + +M src/lib-dict/dict.c + +2020-08-12 15:48:14 +0300 Timo Sirainen (6907021530) + + acl: Add unit test for acl_rights_sort() + + +M src/plugins/acl/Makefile.am +A src/plugins/acl/test-acl.c + +2020-08-12 15:46:31 +0300 Timo Sirainen (3d15b25968) + + acl: acl_rights_sort() - Handle zero sized rights array properly + + Fixes ubsan complaint about count-dest wrapping to negative. The array code + handled this properly though, so nothing was broken. + +M src/plugins/acl/acl-api.c + +2020-09-01 09:13:05 +0300 Aki Tuomi (9a389c7e88) + + lib: test-file-cache - Add tests for file-cache + + +M src/lib/Makefile.am +A src/lib/test-file-cache.c +M src/lib/test-lib.inc + +2020-08-20 16:47:12 +0300 Aki Tuomi (eab4b27d31) + + lib: log-throttle - Initialize last_throttle + + It's compared to ioloop_timeval later on and would produce overflow there. + +M src/lib/log-throttle.c + +2020-08-20 16:24:41 +0300 Aki Tuomi (bbca56c946) + + quota: quota_free_bytes - Check we don't decrease more than INT64_MAX + + Otherwise we get overflow + +M src/plugins/quota/quota.c + +2020-08-20 12:46:06 +0300 Aki Tuomi (d50a5a1151) + + lib: file-dotlock - Do not call callback if we are going to timeout + + +M src/lib/file-dotlock.c + +2020-08-20 10:55:36 +0300 Aki Tuomi (2a82a8a9da) + + lib-mail: istream-header-filter - Avoid unsigned overflow in last_offset + calculation + + Unsigned integer overflow occurs when size is 0. + +M src/lib-mail/istream-header-filter.c + +2020-08-20 10:37:54 +0300 Aki Tuomi (d34c873397) + + lib-ldap: ldap_connection_send_next - Extract next message in separate + function + + +M src/lib-ldap/ldap-connection.c + +2020-08-20 10:31:41 +0300 Aki Tuomi (70d98bc561) + + lib-storage: index-mail-headers - Avoid unsigned overflow on + header_match_value + + +M src/lib-storage/index/index-mail-headers.c + +2020-08-20 09:53:11 +0300 Aki Tuomi (4eb3f6f273) + + imap: imap-sync - Avoid unsigned integer overflow + + Error: imap-sync.c:433:17: runtime error: unsigned integer overflow: + 4294967295 + 1 cannot be represented in type 'unsigned int' + +M src/imap/imap-sync.c + +2020-08-20 09:44:58 +0300 Aki Tuomi (3a5ebc8e80) + + lib-mail: test-istream-attachment - Avoid unsigned overflow in size + calculation + + +M src/lib-mail/test-istream-attachment.c + +2020-08-20 09:44:20 +0300 Aki Tuomi (43f8729587) + + lib: var-expand - Avoid unsigned overflow in offset calculation + + +M src/lib/var-expand.c + +2020-08-20 09:43:35 +0300 Aki Tuomi (16ab55427a) + + lib: time-util - Use correct data types + + +M src/lib/time-util.c + +2020-08-20 09:34:40 +0300 Aki Tuomi (192d351aec) + + quota: quota-imapc - Handle quota limits better + + If quota limit is bigger than INT64_MAX, it's unlimited as we cannot express + this anyways. + +M src/plugins/quota/quota-imapc.c + +2020-08-20 09:10:36 +0300 Aki Tuomi (7ca5c15b7f) + + lib-mail: message-parser - Change last_chr to unsigned char + + Matches code usage. + +M src/lib-mail/message-parser-private.h + +2020-08-20 09:02:07 +0300 Aki Tuomi (1a29b5ec0c) + + lib-imap-storage: imap-msgpart - Fix constant type + + +M src/lib-imap-storage/imap-msgpart.c + +2020-08-20 08:47:16 +0300 Aki Tuomi (a0ea53c313) + + auth: password-scheme - Fix salt generation data type mess + + Satisfies runtime analyser + +M src/auth/password-scheme.c + +2020-08-20 08:44:45 +0300 Aki Tuomi (13254b7a45) + + auth: mech-scram - Use correct data type for proof calculation + + Satisfies runtime analyzer + +M src/auth/mech-scram.c + +2020-08-31 16:15:15 +0300 Aki Tuomi (faa0c21f21) + + lib: Remove istream-mmap.c + + Nothing uses it. + +M src/lib/Makefile.am +D src/lib/istream-mmap.c +M src/lib/istream.h + +2020-08-31 10:33:05 +0300 Aki Tuomi (28d085f408) + + lib-ntlm: Ensure data_size is large enough for buffer + + +M src/lib-ntlm/ntlm-message.c + +2020-08-13 09:48:27 +0300 Aki Tuomi (371025a287) + + lib-ntlm: Use CONST_PTR_OFFSET + + +M src/lib-ntlm/ntlm-message.c +M src/lib-ntlm/ntlm.h + +2020-08-13 09:46:37 +0300 Aki Tuomi (4a264f8f70) + + auth, lib-ntlm: Use dovecot byteorder functions + + +M src/auth/mech-ntlm.c +M src/lib-ntlm/Makefile.am +D src/lib-ntlm/ntlm-byteorder.h +M src/lib-ntlm/ntlm-message.c +M src/lib-ntlm/ntlm.h + +2020-08-11 09:00:17 +0300 Aki Tuomi (acba0e7c3d) + + lib: buffer - Assert that we don't try to allocate SIZE_MAX buffer + + Only if devel checks are enabled + +M src/lib/buffer.c + +2020-08-11 08:45:37 +0300 Aki Tuomi (c2631470a7) + + lib-ssl-iostream: ostream-openssl - Allocate at most IO_BLOCK_SIZE initial + buffer + + Otherwise we might attempt to allocate way too large buffers. This has not + caused issues yet, except with max_buffer_size=SIZE_T, which has been + causing us to allocate 0-sized buffers. + +M src/lib-ssl-iostream/ostream-openssl.c + +2020-08-10 19:54:51 +0300 Aki Tuomi (ddf34a7a7c) + + auth: auth-cache - Data is not 4 bytes but variable sized + + +M src/auth/auth-cache.c +M src/auth/auth-cache.h + +2020-08-13 11:41:23 +0300 Aki Tuomi (91c831378a) + + lib-otp: Use for-loop instead while + + Avoids unsigned integer wrap + +M src/lib-otp/otp-hash.c + +2020-08-13 11:40:35 +0300 Aki Tuomi (6473c1a61f) + + lib-compression: istream-zstd - Handle signed/unsigned return values + correctly + + +M src/lib-compression/istream-zstd.c + +2020-08-13 11:39:59 +0300 Aki Tuomi (20765bf476) + + lib: lib-event - Use for-loop in copying categories + + Avoids unsigned integer wrap + +M src/lib/lib-event.c + +2020-08-19 13:55:18 +0300 Aki Tuomi (5c7b859710) + + global: Use i_rand_limit(limit) instead of i_rand() % limit + + spatch with coccinelle/random-misuse.cocci + +A coccinelle/random-misuse.cocci +M src/director/director-test.c +M src/lib-fts/test-fts-tokenizer.c +M src/lib/test-array.c +M src/lib/test-data-stack.c +M src/lib/test-hash.c +M src/lib/test-istream-crlf.c +M src/lib/test-istream-multiplex.c +M src/lib/test-multiplex.c +M src/lib/test-ostream-multiplex.c +M src/lib/test-seq-range-array.c + +2020-08-19 14:01:50 +0300 Aki Tuomi (a8705c0a82) + + lib: Use i_rand_limit() helpers + + +M src/lib/test-array.c +M src/lib/test-base32.c +M src/lib/test-base64.c +M src/lib/test-buffer.c +M src/lib/test-istream-base64-decoder.c + +2020-08-19 14:00:03 +0300 Aki Tuomi (761f5d7796) + + lib: test-base32/64 - Use unsigned char + + Simplifies next change + +M src/lib/test-base32.c +M src/lib/test-base64.c + +2020-08-19 19:49:38 +0300 Aki Tuomi (5549aec84f) + + lib: Add some helpers for random values + + +M src/lib/lib.h + +2020-08-19 14:33:59 -0400 Josef 'Jeff' Sipek (bbdd5bb3b7) + + lib: Document how i_rand_limit() ensures uniform distribution + + This algorithm is not original, but it is dense enough that a detailed + explanation is in order. + +M src/lib/rand.c + +2020-08-13 11:35:17 +0300 Aki Tuomi (0589ced751) + + lib: rand - Fix random number bounding + + +M src/lib/rand.c + +2020-08-11 08:48:09 +0300 Aki Tuomi (6c21966242) + + auth: password-scheme - Use generate_salt in md5crypt + + Deduplicates code + +M src/auth/password-scheme.c + +2020-08-23 23:24:35 +0300 Aki Tuomi (74598bd6d3) + + lib-sql: driver-cassandra - Add SSL options + + ssl_ca=: Sets trusted peer certificate filename ssl_cert=: Sets + client certificate filename sl_key=: Sets client certificate private + key filename ssl_key_password=: Sets password for private key + ssl_verify=none | cert | cert-ip | cert-dns: Sets verify mode + * none = don't verify + * cert = verify certificate + * cert-ip = verify IP from CN or SubjectAltName + * cert-dns = verify hostname from CN or SubjectAltName + +M src/lib-sql/driver-cassandra.c + +2020-08-23 23:05:33 +0300 Aki Tuomi (0429b4aaf5) + + lib: buffer - Add buffer_append_full_(file|istream) + + Consume istream or file up to max_read_size or EOF. + +M src/lib/Makefile.am +A src/lib/buffer-istream.c +M src/lib/buffer.h +A src/lib/test-buffer-istream.c +M src/lib/test-lib.inc + +2020-08-23 22:24:07 +0300 Aki Tuomi (c25e20d658) + + m4: want_cassandra.m4 - Add check for CASS_SSL_VERIFY_PEER_IDENTITY_DNS + + +M m4/want_cassandra.m4 + +2020-08-23 22:06:50 +0300 Aki Tuomi (5cf96c1e73) + + m4: want_cassandra.m4 - Add check for + cass_cluster_set_use_hostname_resolution + + +M m4/want_cassandra.m4 + +2020-08-23 22:06:34 +0300 Aki Tuomi (f4f08ac194) + + m4: Modernize want_cassandra.m4 + + +M m4/want_cassandra.m4 + +2020-08-28 13:17:10 +0300 Aki Tuomi (8055e6bacd) + + lib-sql: driver-cassandra - Use INTx_MIN and INTx_MAX + + Preferred over magic numbers + +M src/lib-sql/driver-cassandra.c + +2020-08-28 13:13:32 +0300 Aki Tuomi (e1c3224a48) + + lib-sql: Reformat driver-cassandra.c + + +M src/lib-sql/driver-cassandra.c + +2020-09-09 12:08:38 +0300 Timo Sirainen (60b4040ba4) + + lib-compression: Add unit test to compress large input + + This catches earlier zstd and lzma bugs. + +M src/lib-compression/test-compression.c + +2020-09-09 13:00:44 +0300 Timo Sirainen (3d0f6cf3e0) + + lib-compression: ostream-lzma - Compressed output could have been truncated + + The compression wasn't fully finished, resulting in truncated compressed + output that couldn't be fully read back. Reading would result in "Broken + pipe" errors. + + Broken by 6080aa16e1bd50cd661acc31203d9f4986a9450a + +M src/lib-compression/ostream-lzma.c + +2020-09-09 12:48:39 +0300 Timo Sirainen (d559f58767) + + lib-compression: istream-lzma - Improve error messages in EOF handling + + +M src/lib-compression/istream-lzma.c + +2020-09-09 12:46:51 +0300 Timo Sirainen (a775fe3d06) + + lib-compression: istream-lzma - Fix EOF handling + + lzma_stream_end() call was accidentally dropped by + c6248b825d8c6562b1320e51ad0d88e99b9fbe85 + + This (probably) didn't result in visible problems. + +M src/lib-compression/istream-lzma.c + +2020-09-08 21:19:21 +0300 Timo Sirainen (a96e742047) + + lib-compression: ostream-zstd - Fix assert-crash with large input + + If the input was large enough, the ostream write could have returned + partially written output. Since this ostream-zstd was only used for blocking + ostreams, this would always result in an assert-crash. Fix is to keep + flushing the output to parent if the output buffer becomes full. + + Fixes: Panic: file ostream.c: line 287 (o_stream_sendv_int): assertion + failed: (!stream->blocking) + +M src/lib-compression/ostream-zstd.c + +2020-09-09 12:03:31 +0300 Timo Sirainen (48083d9e7f) + + lib: ostream-buffer: Return 0 as the used size, not the destination buffer + size + + This allows using ostream-buffer in places that previously would think that + the ostream buffer needed to be flushed because its buffer size was too + large. + + This also changes o_stream_get_buffer_avail_size() to always return the + ostream max buffer size. + +M src/lib/ostream-buffer.c +M src/lib/test-ostream-buffer.c + +2020-08-31 15:29:03 +0200 Stephan Bosch (2d9f3124da) + + lib-smtp: smtp-server-recipient - Recipient event should be using the + transaction event as parent. + + The connection event is only used as event parent when the MAIL command + failed in pipeline or when the recipient is destroyed prematurely. The log + prefix of the transaction event is dropped, so that the connection event log + prefix is used in either case. Therefore, the main visible effect of this + commit is that the transaction event fields are available in the recipient + event when there is a transaction, the log messages will not change. + +M src/lib-smtp/smtp-server-recipient.c + +2020-08-31 14:10:18 +0200 Stephan Bosch (e0529aa325) + + lib-smtp: smtp-server-recipient - Don't create event until transaction + becomes available. + + This way, the recipient event parent can be the transaction event once (and + if) that becomes available. + +M src/lib-smtp/smtp-server-cmd-rcpt.c +M src/lib-smtp/smtp-server-private.h +M src/lib-smtp/smtp-server-recipient.c + +2020-08-31 14:58:44 +0200 Stephan Bosch (55a8b332c0) + + lib-smtp: smtp-server-command - Always call the NEXT_TO_REPLY hook. + + Before, it wasn't called when a reply was submitted before the command + became next to reply. + +M src/lib-smtp/smtp-server-cmd-mail.c +M src/lib-smtp/smtp-server-cmd-rcpt.c +M src/lib-smtp/smtp-server-command.c +M src/lib-smtp/smtp-server-connection.c + +2020-08-31 14:44:25 +0200 Stephan Bosch (1cae0ff5c8) + + lib-smtp: smtp-server-command - Move smtp_server_command_ready_to_reply(). + + New order makes more sense in the progression of command state. + +M src/lib-smtp/smtp-server-command.c + +2020-09-02 11:15:33 +0200 Stephan Bosch (205b9fd9f4) + + lib: event-log - Fix handling dropping parent prefixes beyond a drop at a + higher level. + + Before, the drop in the higher level became invisible to the lower + hiererarchies. For example: + + parent1, parent2, parent3, parent4(drop one) yielded + "parent1: parent2: parent4: " as a prefix (which is still OK), whereas + parent1: parent2: parent3: parent4(drop one): leaf(drop 3) yielded + "parent1: leaf: ", while the expected prefix would be: + "leaf: ". + + This means that the drop of one prefix by parent4 is ignored. Instead it + should apply that drop and operate on the prefixes that are still visible at + the lowel level, so the number of prefixes dropped should be additive, which + is what this commit changes. + +M src/lib/event-log.c +M src/lib/test-event-log.c + +2020-08-31 15:08:43 +0200 Stephan Bosch (fbd4baa150) + + lib-smtp: Reformat smtp-server-recipient.c. + + +M src/lib-smtp/smtp-server-recipient.c + +2020-08-31 14:40:16 +0200 Stephan Bosch (6848a98e52) + + lib-smtp: Reformat smtp-server-private.h. + + +M src/lib-smtp/smtp-server-private.h + +2020-08-31 14:37:35 +0200 Stephan Bosch (5cd3c75a8e) + + lib-smtp: Reformat smtp-server-connection.c. + + +M src/lib-smtp/smtp-server-connection.c + +2020-08-31 14:21:41 +0200 Stephan Bosch (4d7f258c93) + + lib-smtp: Reformat smtp-server-command.c. + + +M src/lib-smtp/smtp-server-command.c + +2020-08-31 14:16:31 +0200 Stephan Bosch (953c35eed3) + + lib-smtp: Reformat smtp-server-cmd-mail.c. + + +M src/lib-smtp/smtp-server-cmd-mail.c + +2020-08-31 14:13:31 +0200 Stephan Bosch (bb6edd5e63) + + lib-smtp: Reformat smtp-server-cmd-rcpt.c. + + +M src/lib-smtp/smtp-server-cmd-rcpt.c + +2020-09-07 10:56:34 +0300 Aki Tuomi (178bb676ea) + + lib-dict: dict_transaction_commit_async() - Never call callback immediately + + This could cause confusion for the callers. Although so far all the callers + have handled it fine. + + Use this wrappers for all dict drivers, even if they support async commits + themselves. This is because many of them were still calling the callback + immediately on error handling. + +M src/lib-dict/dict-private.h +M src/lib-dict/dict.c + +2020-09-10 10:16:56 +0300 Timo Sirainen (54bc6c2d4e) + + lib: istream-try - Fix off-by-one check for min_buffer_full_size + + This mainly fixes random failures with the unit test. + +M src/lib/istream-try.c + +2020-09-10 10:16:35 +0300 Timo Sirainen (7a16c2e06d) + + lib: test-istream-try - Fix test name + + +M src/lib/test-istream-try.c + +2020-09-08 17:32:32 +0300 Timo Sirainen (6d4c1a6506) + + lib: istream-try - Fix detecting istream when its input buffer is full + + The previous check didn't work when the stream's buffer_size was 0, which + happened with istream-concat parent. + + Added also a unit test that tries to test for these kind of situations. It + doesn't actually reproduce this specific bug, but it tests that the code + paths works at least in the generic situation. + +M src/lib/istream-try.c +M src/lib/istream-try.h +M src/lib/test-istream-try.c +M src/plugins/fs-compress/fs-compress.c + +2020-09-08 20:14:09 +0300 Timo Sirainen (b1ca1ba084) + + lib-compression: Add COMPRESSION_HDR_MAX_SIZE macro + + Will be used by the next commit. + +M src/lib-compression/compression.h + +2020-07-08 10:18:27 +0200 Markus Valentin (43131bf97f) + + quota: Add logging prefix once and remove it from loglines + + +M src/plugins/quota/quota-storage.c +M src/plugins/quota/quota.c + +2020-07-07 14:39:22 +0200 Markus Valentin (f4ab672321) + + quota: Introduce per quota-backend events + + +M src/plugins/quota/quota-count.c +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota-dirsize.c +M src/plugins/quota/quota-fs.c +M src/plugins/quota/quota-imapc.c +M src/plugins/quota/quota-maildir.c +M src/plugins/quota/quota-private.h +M src/plugins/quota/quota.c + +2019-10-31 19:27:15 +0200 Timo Sirainen (d9f9d08624) + + quota: Use event based logging + + +M src/plugins/quota/quota-dict.c +M src/plugins/quota/quota-fs.c +M src/plugins/quota/quota-imapc.c +M src/plugins/quota/quota-maildir.c +M src/plugins/quota/quota-storage.c +M src/plugins/quota/quota-util.c +M src/plugins/quota/quota.c + +2020-08-25 14:01:24 +0300 Aki Tuomi (25ed309c85) + + quota: Add event support + + +M src/plugins/quota/quota-private.h +M src/plugins/quota/quota.c + +2020-08-31 18:30:18 +0300 Timo Sirainen (15ae4f8c63) + + lib-index: Fix cache being purged too often when it had unaccessed fields + + Cache was being purged when it had a field that was last accessed after + mail_cache_unaccessed_field_drop but before + 2*mail_cache_unaccessed_field_drop. This purging may not have even done + anything. + + Use shared code now between the check in mail_cache_header_fields_read() and + the actual purging in mail_cache_purge_check_field(). This way they can't + become desynced again. + +M src/lib-index/mail-cache-fields.c +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache-purge.c + +2020-08-31 17:27:58 +0300 Timo Sirainen (c4a85ba0e4) + + lib-index: Use delayed purge reason for mail_cache_purge_* events + + +M src/lib-index/mail-cache-purge.c +M src/lib-index/mail-cache.h +M src/lib-index/mail-index-sync.c + +2020-08-31 17:25:54 +0300 Timo Sirainen (4dd52e0499) + + lib-index: Remember reason for delayed cache file purges + + +M src/lib-index/mail-cache-fields.c +M src/lib-index/mail-cache-private.h +M src/lib-index/mail-cache-purge.c +M src/lib-index/mail-cache.c +M src/lib-index/mail-cache.h + +2020-08-31 17:23:05 +0300 Timo Sirainen (bfd065af9e) + + lib-index: Fix file_size field in mail_cache_purge_finished event + + It used to be 32 always. + +M src/lib-index/mail-cache-purge.c + +2020-08-26 18:39:22 +0300 Timo Sirainen (fe21413485) + + lib-index: Fix deadlock when expunging mails and adding lots of data to + cache + + This practically happened only when dovecot.index.cache contents were lost + and they were being re-filled while mails were also being expunged. + + Broken by 9efb99924d0b7de27ca83e373f2290f3dd5b22cf + +M src/lib-index/mail-cache-transaction.c + +2020-08-28 17:16:03 +0300 Timo Sirainen (b3f95fbad7) + + zlib: Rename istreams from zlib(parent) to compress(parent) + + This clarifies it that the istream is a generic compression stream, not + specifically zlib/gz. + +M src/plugins/zlib/zlib-plugin.c + +2020-08-28 17:13:32 +0300 Timo Sirainen (154109921d) + + lib-compression: ostreams - Add asserts to clarify how buffer flushing works + + If the output buffer isn't fully sent, the flush function returns 0 early + on, before setting flushed=TRUE. + +M src/lib-compression/ostream-bzlib.c +M src/lib-compression/ostream-lzma.c +M src/lib-compression/ostream-zlib.c +M src/lib-compression/ostream-zstd.c + +2020-08-28 16:57:57 +0300 Timo Sirainen (1e3f43e124) + + auth: Fix leaking memory if auth client disconnects with pending penalty + delays + + * auth penalty lookup returns that auth_request needs a penalty delay + * during the penalty timeout auth client disconnects + * auth requests are freed, but auth_request_handler isn't unreferenced + + This resulted in memory leak, and after recent changes also logging warnings + about event leaks. + +M src/auth/auth-request-handler.c +M src/auth/auth-request-handler.h +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-27 18:35:33 +0300 Timo Sirainen (01a112995f) + + lib-auth: Remove duplicate auth_client_connection.event + + It's already in auth_client_connection.conn.event. Just use it directly to + avoid any confusion between them. + +M src/lib-auth/auth-client-connection.c +M src/lib-auth/auth-client-private.h +M src/lib-auth/auth-client-request.c + +2020-08-27 17:28:38 +0300 Timo Sirainen (50a6a5c0db) + + auth: Fix compiling gssapi, bsdauth, sia, vpopmail + + Broken by 5ff7299c9d85b1bab0c7d53d9459dbb31a2bd9d6 + +M src/auth/mech-gssapi.c +M src/auth/passdb-bsdauth.c +M src/auth/passdb-sia.c +M src/auth/passdb-vpopmail.c +M src/auth/userdb-vpopmail.c + +2020-08-20 00:24:52 +0200 Stephan Bosch (c2df8fa8ba) + + lib-http: test-http-client-errors - Add tests involving idle connections. + + Tests idle timeout and connection reuse. + +M src/lib-http/test-http-client-errors.c + +2020-08-20 00:17:49 +0200 Stephan Bosch (ef4e71e5c2) + + lib-http: http-client-connection - Use http_client_connection_is_active() to + check idle status. + + This makes the check shorter and easier to understand. + +M src/lib-http/http-client-connection.c + +2020-08-12 22:30:35 +0200 Stephan Bosch (6f16b0d63e) + + lib-http: http-client-queue - Fix unsigned int arithmetic problem in + http_client_queue_request_timeout_cmp(). + + +M src/lib-http/http-client-queue.c + +2020-08-13 19:31:30 +0200 Stephan Bosch (ba7357541e) + + lib-http: http-client-connection - Use timeout_add_short_to() for idle + timeout. + + The idle timeout can be very short. + +M src/lib-http/http-client-connection.c + +2020-08-12 21:33:08 +0200 Stephan Bosch (f9751e9b22) + + lib-http: http-client-connection - Make idle timeout calculation more + robust. + + +M src/lib-http/http-client-connection.c +M src/lib-http/http-client-private.h + +2020-08-12 22:24:22 +0200 Stephan Bosch (7e849b84ac) + + lib-http: http-client-connection - Explicitly handle an infinite connection + limit for setting idle timeout. + + This can just use the maximum idle timeout directly. + +M src/lib-http/http-client-connection.c + +2020-08-12 22:20:26 +0200 Stephan Bosch (32f0fc2b41) + + lib-http: http-client-connection - Deal with first idle connection + separately for setting idle timeout. + + This can just use the maximum idle timeout directly. + +M src/lib-http/http-client-connection.c + +2020-08-12 21:17:08 +0200 Stephan Bosch (2d49e42f9a) + + lib-http: http-client-connection - Improve overall logic in + http_client_connection_start_idle_timeout(). + + Make clear that idle_count < max when it is used. + +M src/lib-http/http-client-connection.c + +2020-08-12 18:00:45 +0200 Stephan Bosch (09acd5c1eb) + + lib-http: http-client-connection - Start idle state in a common function. + + Removes code duplication. + +M src/lib-http/http-client-connection.c + +2020-08-12 20:35:46 +0200 Stephan Bosch (6ea3dc6f41) + + lib-http: http-client-connection - Handle infinite idle timeout + consistently. + + +M src/lib-http/http-client-connection.c + +2020-08-12 20:11:01 +0200 Stephan Bosch (8255f15bfc) + + lib-http: http-client-connection - Start idle timeout in a common function. + + +M src/lib-http/http-client-connection.c + +2020-08-12 19:54:50 +0200 Stephan Bosch (dda4e8d8a5) + + lib-http: http-client-connection - Use separate flag for idle status. + + It used the presence of the idle timeout before, which isn't acceptable when + the timeout is changed to be optional (happens in later commit). + +M src/lib-http/http-client-connection.c +M src/lib-http/http-client-private.h + +2020-08-12 17:16:12 +0200 Stephan Bosch (d1d65664bf) + + lib-http: http-client-connection - Determine idle timeout consistently. + + It should not matter whether connection got idle due to lost peer or + otherwise. + +M src/lib-http/http-client-connection.c + +2020-08-12 17:10:20 +0200 Stephan Bosch (9ead85be5b) + + lib-http: http-client-connection - Restructure + http_client_connection_check_idle(). + + +M src/lib-http/http-client-connection.c + +2020-08-12 17:06:23 +0200 Stephan Bosch (60bd3475f6) + + lib-http: http-client-connection - Restructure + http_client_connection_lost_peer(). + + +M src/lib-http/http-client-connection.c + +2020-08-12 21:47:39 +0200 Stephan Bosch (50814cc74f) + + lib-http: http-client-peer - Properly saturate result of + http_client_peer_shared_max_connections() at UINT_MAX. + + +M src/lib-http/http-client-peer.c + +2020-08-12 18:27:48 +0200 Stephan Bosch (ecaf195beb) + + lib-http: Reformat http-client-connection.c. + + +M src/lib-http/http-client-connection.c + +2018-03-20 20:59:07 +0100 Stephan Bosch (111b0d3063) + + lib-http: Reformat http-client-private.h. + + +M src/lib-http/http-client-private.h + +2018-03-20 20:59:21 +0100 Stephan Bosch (9b0f648c58) + + lib-http: Reformat http-client-queue.c. + + +M src/lib-http/http-client-queue.c + +2018-03-20 20:58:56 +0100 Stephan Bosch (4dd39dc63d) + + lib-http: Reformat http-client-peer.c. + + +M src/lib-http/http-client-peer.c + +2020-08-10 14:43:11 +0300 Aki Tuomi (a88b78fa5a) + + lib-auth: Do not send ssl details to auth process + + They are not used for anything. But we still provide them as auth_client + event fields, so that we can e.g. do metrics on which TLS protocol is used. + +M src/lib-auth/auth-client-request.c + +2020-08-10 10:56:14 +0300 Aki Tuomi (b2511e8d6b) + + lib-auth: Add user_mask to auth_userdb_list events + + +M src/lib-auth/auth-master.c + +2020-08-10 10:23:19 +0300 Aki Tuomi (4e3ae6fab7) + + lib-auth: Add new fields to auth_client_userdb events + + +M src/lib-auth/auth-master.c + +2020-08-10 09:29:10 +0300 Aki Tuomi (395ef5b35c) + + doveadm: doveadm-auth - Add support for real_{remote|local}_{ip|port} -x + parameters + + +M src/doveadm/doveadm-auth.c + +2020-08-10 09:11:41 +0300 Aki Tuomi (d4a70a35ee) + + doveadm: doveadm-auth - Add session and local_name -x parameters + + +M src/doveadm/doveadm-auth.c + +2020-08-10 09:10:08 +0300 Aki Tuomi (6c5b749390) + + lib-auth: Add session_id and local_name to master auth + + +M src/lib-auth/auth-master.c +M src/lib-auth/auth-master.h + +2020-08-06 10:52:18 +0300 Aki Tuomi (f02877312e) + + lmtp: Rename orig_user event field to original_user + + +M src/lmtp/lmtp-proxy.c + +2020-07-27 09:11:47 +0300 Aki Tuomi (d1aaeab138) + + lib-auth: Add more fields to auth client event + + This way it becomes more useful + +M src/lib-auth/auth-client-request.c + +2020-07-27 12:26:49 +0300 Aki Tuomi (36de1858d0) + + lib-auth: Always iterate input arguments + + Makes next change easier + +M src/lib-auth/auth-client-request.c + +2020-07-27 08:48:49 +0300 Aki Tuomi (0e3468f07e) + + lib-auth: Send event after setting all fields + + +M src/lib-auth/auth-client-request.c + +2020-08-06 19:38:33 +0300 Timo Sirainen (d602274721) + + man: doveadm-auth - List more -x fields + + +M doc/man/doveadm-auth.1.in + +2020-08-06 14:13:29 +0300 Timo Sirainen (570ad473dd) + + auth: Add some unit testing for auth_request_import/export() + + +M src/auth/Makefile.am +A src/auth/test-auth-request-fields.c +M src/auth/test-auth.h +M src/auth/test-main.c + +2020-08-06 14:10:50 +0300 Timo Sirainen (4d46d3e5cf) + + auth: Escape exported session ID string in protocol replies + + Session ID is normally coming only from trusted sources, so the lack of + escaping shouldn't have mattered too much. + +M src/auth/auth-request-fields.c + +2020-08-05 22:48:40 +0300 Timo Sirainen (3edbefb705) + + auth: Worker commands: Rename "id" event field to "command_id" + + Now that auth_request events are inherited from worker command events, the + "id" field was also inherited. This is rather confusing and might conflict + with other IDs in the future, so better to rename it already. + +M src/auth/auth-worker-client.c + +2020-08-05 22:45:30 +0300 Timo Sirainen (e53e98204d) + + auth: Support inheritance for master auth_requests' events + + Requests created by auth worker will inherit from the command's event, while + other events inherit from the global auth_event for now (since + auth-master-connection doesn't have its own event yet). + +M src/auth/auth-master-connection.c +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/auth-worker-client.c +M src/auth/test-lua.c + +2020-08-05 22:43:55 +0300 Timo Sirainen (95f89e9048) + + auth: Inherit auth client connection event from the global auth_event + + +M src/auth/auth-client-connection.c + +2020-06-25 20:03:57 +0300 Timo Sirainen (b06d4c7309) + + doveadm auth: Support forward and extra fields with -x parameter + + Using "forward_" prefix assumes that it's a forwarded field. Otherwise all + unknown parameters are assumed to be extra fields. + +M src/doveadm/doveadm-auth.c + +2020-08-05 22:25:12 +0300 Timo Sirainen (1d5bbaf127) + + lib-auth: auth-client - Support sending extra_fields. + + +M src/lib-auth/auth-client-request.c +M src/lib-auth/auth-client.h + +2020-05-28 23:10:41 +0200 Stephan Bosch (4ac4b3b5d2) + + lib-auth: auth-master - Support sending extra_fields. + + +M src/lib-auth/auth-master.c +M src/lib-auth/auth-master.h + +2020-08-04 17:35:30 +0300 Timo Sirainen (29371f227e) + + auth: Add more event fields + + +M src/auth/auth-request-fields.c + +2020-08-04 17:34:42 +0300 Timo Sirainen (b0fb82bb67) + + auth: Set event fields immediately when they're changed in + auth_request_fields + + This way the fields are available for all auth events, not just the final + events. + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c + +2020-08-06 12:29:07 +0300 Timo Sirainen (6c0fb43324) + + auth: Remove "username" and "domain" event fields + + They're not very useful in event fields, since event filtering can just do + user=username@* or user=*@domain. + +M src/auth/auth-request.c + +2020-08-04 17:30:02 +0300 Timo Sirainen (8499ff49e6) + + auth: Remove "credentials_scheme" event field + + This field wasn't set for plaintext authentication, and in general it's not + quite what it was intended to be. Better to remove it entirely to avoid + confusion. + +M src/auth/auth-request.c + +2020-08-04 17:29:32 +0300 Timo Sirainen (764265bfdf) + + auth: Rename auth_request.credentials_scheme to wanted_credentials_scheme + + Also add comments explaining what it actually does. + +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/auth-worker-client.c +M src/auth/db-checkpassword.c +M src/auth/passdb-blocking.c +M src/auth/passdb-checkpassword.c +M src/auth/passdb-dict.c +M src/auth/passdb-ldap.c +M src/auth/passdb-sql.c +M src/auth/passdb.c + +2020-08-04 16:46:15 +0300 Timo Sirainen (6619fbab6f) + + auth: Rename "orig_user" event field to "original_user" + + It's a bit more understandable to use the full name. There's now also + %{original_user} variable alias. + +M src/auth/auth-request.c + +2020-08-04 16:30:59 +0300 Timo Sirainen (3822c3e6e3) + + auth: Rename "mech" event field to "mechanism" + + It's a bit more understandable to use the full name. There's now also + %{mechanism} variable alias. + +M src/auth/auth-request-fields.c + +2020-08-03 18:51:33 +0300 Timo Sirainen (97749d387f) + + auth: Keep auth_request_fields const for most of the code + + This way there's a compiler warning/error if anything outside + auth-request-fields.c attempts to modify them. It makes it easier to keep + the values synced with events. + +M src/auth/auth-request-fields.c +M src/auth/auth-request.h +M src/auth/test-auth.h + +2020-08-04 16:16:18 +0300 Timo Sirainen (8c698ff01e) + + auth: test-mech - Fix include ordering + + Required by the following change. + +M src/auth/test-mech.c + +2020-08-04 14:48:23 +0300 Timo Sirainen (4d724f877b) + + auth: Add and use auth_request_set_delayed_credentials() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-04 14:44:00 +0300 Timo Sirainen (8f86c02d64) + + auth: Add and use auth_request_set_login_username_forced() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-04 14:28:28 +0300 Timo Sirainen (39c4197b30) + + auth: LIST - Use auth_request_import() to set missing "service" + + +M src/auth/auth-master-connection.c + +2020-08-04 14:26:08 +0300 Timo Sirainen (c5a72becc6) + + auth: Use auth_request_init_userdb_reply() always for initializing + userdb_reply + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c + +2020-08-04 14:23:18 +0300 Timo Sirainen (e04efc5cbf) + + auth: auth_request_init_userdb_reply() - Add add_default_fields parameter + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/auth-worker-client.c + +2020-08-04 14:22:16 +0300 Timo Sirainen (544781e8d4) + + auth: Move auth_request_init_userdb_reply() to auth-request-fields.c + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c + +2020-08-04 12:42:22 +0300 Timo Sirainen (1797aaf874) + + auth: Add and use auth_request_set_password_verified() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-04 12:32:27 +0300 Timo Sirainen (4dc7edd911) + + auth: Add and use auth_request_set_auth_successful() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-03 17:32:34 +0300 Timo Sirainen (deaba55862) + + auth: Add and use auth_request_set_realm() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.h +M src/auth/mech-digest-md5.c + +2020-08-03 17:25:59 +0300 Timo Sirainen (854ffb49fd) + + auth: Add and use auth_request_set_username_forced() + + +M src/auth/auth-master-connection.c +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/mech-anonymous.c +M src/auth/userdb-blocking.c + +2020-08-04 14:41:42 +0300 Timo Sirainen (cb06a8f19c) + + auth: Change auth_request_fix_username() to return int + + +M src/auth/auth-request-fields.c + +2020-08-04 14:35:49 +0300 Timo Sirainen (5f5256311a) + + auth: Optimize memory usage when auth_username_format is set + + The per-request memory pool was used unnecessarily to allocate the username + before the formatting was applied. + +M src/auth/auth-request-fields.c + +2020-08-03 17:16:12 +0300 Timo Sirainen (6bf74fbc35) + + auth: Move auth_request_fields initialization code to + auth_request_fields_init() + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-03 17:11:14 +0300 Timo Sirainen (51623b9e9e) + + auth: Move auth_request_master_lookup_finish() to auth-request-fields.c + + Also rename it to auth_request_master_user_login_finish(). + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-03 17:07:22 +0300 Timo Sirainen (007deed21f) + + auth: Move username changing functions to auth-request-fields.c + + +M src/auth/auth-request-fields.c +M src/auth/auth-request.c + +2020-08-03 17:06:23 +0300 Timo Sirainen (f469acfcd2) + + auth: Change auth_request_get_log_prefix_db() to be public + + +M src/auth/auth-request.c +M src/auth/auth-request.h + +2020-08-03 16:49:00 +0300 Timo Sirainen (1c7ea685e6) + + auth: test-lua - Use auth_request_set_username() + + Instead of changing the user directly. + +M src/auth/test-lua.c + +2020-08-03 16:43:56 +0300 Timo Sirainen (8841d1b2a8) + + auth: test-lua - Deduplicate code into test_db_lua_auth_request_new() + + +M src/auth/test-lua.c + +2020-08-03 16:28:57 +0300 Timo Sirainen (6e07479735) + + auth: auth_request_fix_username() - Don't temporarily modify + auth_request_fields.user + + Use the new username parameter in auth_request_get_var_expand_table_full() + instead. + +M src/auth/auth-request.c + +2020-08-03 16:26:11 +0300 Timo Sirainen (e743e0b02b) + + auth: auth_cache_insert() - Don't temporarily modify + auth_request_fields.user + + Use the new username parameter in auth_request_get_var_expand_table_full() + instead. + +M src/auth/auth-cache.c +M src/auth/test-auth-cache.c + +2020-08-03 16:18:00 +0300 Timo Sirainen (aa21999180) + + auth: auth_request_get_var_expand_table_full() - Add username parameter + + +M src/auth/auth-policy.c +M src/auth/auth-request-var-expand.c +M src/auth/auth-request-var-expand.h +M src/auth/db-ldap.c +M src/auth/db-oauth2.c + +2020-08-04 16:45:19 +0300 Timo Sirainen (2522e957e1) + + auth: Add %{original_*} aliases for %{orig_*} + + +M src/auth/auth-request-var-expand.c +M src/auth/auth-request-var-expand.h + +2020-08-04 16:19:29 +0300 Timo Sirainen (bff8b10007) + + auth: Add %{mechanism} alias for %{mech} + + +M src/auth/auth-request-var-expand.c +M src/auth/auth-request-var-expand.h + +2020-04-27 16:43:39 +0300 Timo Sirainen (bb2a9ba49a) + + auth: Add %{[real_]local/remote_ip/port} aliases for + %{[real_]lip/rip/lport/rport) + + +M src/auth/auth-request-var-expand.c +M src/auth/auth-request-var-expand.h +M src/auth/test-auth-request-var-expand.c + +2020-08-03 15:10:35 +0300 Timo Sirainen (c5d940f758) + + auth: Move auth_request_export/import*() to auth-request-fields.c + + +M src/auth/Makefile.am +A src/auth/auth-request-fields.c +M src/auth/auth-request.c + +2020-08-03 14:56:12 +0300 Timo Sirainen (5ff7299c9d) + + auth: Move imported/exported fields to struct auth_request_fields + + This makes it clearer what fields are being passed between auth master and + worker processes. + +M src/auth/auth-cache.c +M src/auth/auth-master-connection.c +M src/auth/auth-penalty.c +M src/auth/auth-policy.c +M src/auth/auth-request-handler.c +M src/auth/auth-request-stats.c +M src/auth/auth-request-var-expand.c +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/auth-worker-client.c +M src/auth/db-checkpassword.c +M src/auth/db-lua.c +M src/auth/db-oauth2.c +M src/auth/mech-anonymous.c +M src/auth/mech-digest-md5.c +M src/auth/mech-dovecot-token.c +M src/auth/mech-external.c +M src/auth/mech-login.c +M src/auth/mech-ntlm.c +M src/auth/mech-otp-skey-common.c +M src/auth/mech-otp.c +M src/auth/mech-rpa.c +M src/auth/mech-skey.c +M src/auth/passdb-blocking.c +M src/auth/passdb-cache.c +M src/auth/passdb-dict.c +M src/auth/passdb-ldap.c +M src/auth/passdb-lua.c +M src/auth/passdb-pam.c +M src/auth/passdb-passwd.c +M src/auth/passdb-shadow.c +M src/auth/passdb-sql.c +M src/auth/passdb-static.c +M src/auth/passdb.c +M src/auth/test-auth-request-var-expand.c +M src/auth/test-lua.c +M src/auth/test-mech.c +M src/auth/userdb-blocking.c +M src/auth/userdb-passwd.c +M src/auth/userdb-static.c + +2020-08-03 14:31:30 +0300 Timo Sirainen (9743153243) + + auth: Remove auth_request->debug + + Use event_want_debug(auth_request->event) instead. + +M src/auth/auth-request.c +M src/auth/auth-request.h +M src/auth/db-ldap.c +M src/auth/passdb-imap.c +M src/auth/test-lua.c + +2020-08-03 14:29:55 +0300 Timo Sirainen (5110ff330c) + + auth: Remove unnecessary auth_request->debug checks + + e_debug() already checks whether debug logging is enabled. + +M src/auth/db-lua.c + +2020-04-26 20:15:39 +0300 Timo Sirainen (6ef8c6324d) + + lib: events - Use const event pointer for "get" functions + + +M src/lib/lib-event.c +M src/lib/lib-event.h + +2020-08-24 15:00:39 +0300 Timo Sirainen (cb875b83a8) + + lib-storage: mail_user_init_fs_settings() - Use user's event as fs parent + event + + +M src/lib-storage/mail-user.c + +2020-08-13 19:13:49 +0300 Aki Tuomi (68817df1ef) + + auth: test-mech - Fix type mismatch + + +M src/auth/test-mech.c + +2020-08-13 19:13:04 +0300 Aki Tuomi (a744f28294) + + auth: test-mech - Fix APOP challenge format + + +M src/auth/test-mech.c + +2020-08-17 18:06:14 +0200 Stephan Bosch (4e264dad2f) + + submission: submission-backend-relay - Handle relay server replies + consistently. + + Initial connection setup errors were handled differently when the reply came + into the ready callback first. + +M src/submission/submission-backend-relay.c + +2018-07-12 00:15:23 +0200 Stephan Bosch (a0a7d59e6a) + + lib-smtp: test-smtp-client-errors - Add test for server presenting invalid + SSL certificate. + + +M src/lib-smtp/Makefile.am +M src/lib-smtp/test-smtp-client-errors.c + +2018-07-14 13:16:05 +0200 Stephan Bosch (4032347467) + + lib-smtp: smtp-client-connection - If SSL connection gets lost, log the last + SSL error. + + +M src/lib-smtp/smtp-client-connection.c + +2018-07-12 00:15:31 +0200 Stephan Bosch (d5c5dffdf9) + + lib-smtp: smtp-client-connection - Handle connection loss uniformly at a + single location. + + Also amend the logged error message with SSL information when relevant. + +M src/lib-smtp/smtp-client-connection.c + +2018-07-14 12:19:07 +0200 Stephan Bosch (58ace7aaaf) + + lib-smtp: smtp-client-connection - Properly log SSL handshake failure + occuring during input read as an error. + + +M src/lib-smtp/smtp-client-connection.c + +2018-07-14 11:35:20 +0200 Stephan Bosch (a9849c479b) + + lib-smtp: smtp-client-connection - Restructure handling of immediate + connection failure. + + The delayed error callback is now started at a single location, much like + lib-http/client deals with this situation. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2020-05-04 17:21:23 +0300 Timo Sirainen (db253d7e8e) + + master: Make sure a listener isn't added to a throttled service + + This fixes master process using 100% CPU in some situations when a service + is being throttled. + +M src/master/service-monitor.c + +2020-08-16 10:57:36 +0100 Paul G. Banks (fea1bacab9) + + auth: mech-gssapi - GSSAPI can contain NUL. + + +M src/auth/mech-gssapi.c + +2020-08-17 19:16:01 +0300 Timo Sirainen (6ab580a6e5) + + imap: Add "mailbox" field to successful imap_client_unhibernated event + + +M src/imap/imap-master-client.c + +2020-08-17 19:10:35 +0300 Timo Sirainen (ef60e26343) + + imap-hibernate: Add "mailbox" field to events + + +M src/imap-hibernate/imap-client.c +M src/imap-hibernate/imap-client.h +M src/imap-hibernate/imap-hibernate-client.c +M src/imap/imap-client-hibernate.c + +2020-08-17 15:33:23 +0300 Timo Sirainen (8fac1bccc1) + + imap, imap-hibernate: Track how long hibernation lasted + + +M src/imap-hibernate/imap-client.c +M src/imap/imap-master-client.c + +2020-08-17 15:39:19 +0300 Timo Sirainen (7c90fb0723) + + imap-hibernate: Add imap_client_unhibernate_retried event + + +M src/imap-hibernate/imap-client.c + +2020-08-17 14:03:53 +0300 Timo Sirainen (be68c85357) + + imap-hibernate: Add imap_client_unhibernated event for errors + + Successful unhibernation is logged by imap process. + +M src/imap-hibernate/imap-client.c + +2020-08-17 13:55:18 +0300 Timo Sirainen (faaaf06e4f) + + imap-hibernate: Handle unhibernation errors more consistently. + + Log an error with the exact reason, and just log "Failed to unhibernate + client" as the info-level disconnect reason. + +M src/imap-hibernate/imap-client.c + +2020-08-17 13:53:50 +0300 Timo Sirainen (6adcb79448) + + imap-hibernate: Fix error handling when unhibernation retry timeout is + reached + + An error message wasn't logged, and a wrong kind of message was logged in + the info line. + +M src/imap-hibernate/imap-client.c + +2020-08-17 13:53:28 +0300 Timo Sirainen (cf69e30178) + + imap-hibernate: Split off imap_move_has_reached_timeout() + + +M src/imap-hibernate/imap-client.c + +2020-08-17 15:06:42 +0300 Timo Sirainen (0ea836c9b0) + + imap: Add imap_client_unhibernated event + + +M src/imap/imap-master-client.c + +2020-08-17 14:48:01 +0300 Timo Sirainen (9e44878321) + + imap: Send unhibernation OK reply to imap-hibernate only after creating + client + + The following commit adds unhibernation event, which would be much more + difficult to implement for this error path without this change. + + The OK reply is still sent before client_create_finish(), which is the part + that could be slow. + +M src/imap/imap-master-client.c + +2020-08-17 14:55:55 +0300 Timo Sirainen (9df45f5df8) + + imap: Set unhibernation IDLE state earlier + + This simplifies the following changes. + +M src/imap/imap-master-client.c + +2020-08-17 13:34:35 +0300 Timo Sirainen (36a255bb93) + + imap: Add imap_client_hibernated event + + +M src/imap/imap-client-hibernate.c + +2020-08-17 13:08:50 +0300 Timo Sirainen (f8a13f869a) + + imap-hibernate: Log via imap_client.event or connection.event + + +M src/imap-hibernate/imap-client.c +M src/imap-hibernate/imap-hibernate-client.c +M src/imap-hibernate/imap-master-connection.c + +2020-08-17 13:08:19 +0300 Timo Sirainen (481e29adea) + + imap-hibernate: Add imap_client.event + + +M src/imap-hibernate/imap-client.c + +2020-08-17 13:07:49 +0300 Timo Sirainen (0665e883e3) + + imap-hibernate: Preserve local_port and remote_port during hibernation + + +M src/imap-hibernate/imap-client.c +M src/imap-hibernate/imap-client.h +M src/imap-hibernate/imap-hibernate-client.c +M src/imap/imap-client-hibernate.c +M src/imap/imap-master-client.c + +2020-08-17 12:47:53 +0300 Timo Sirainen (30098f130d) + + imap: Log ID and logout info lines via imap_client.event + + This doesn't change the logging output at all. + +M src/imap/cmd-id.c +M src/imap/imap-client.c + +2020-08-17 12:45:08 +0300 Timo Sirainen (12d740b891) + + imap: Log imap-master errors/debugs via connection.event + + +M src/imap/imap-master-client.c + +2020-08-17 12:43:12 +0300 Timo Sirainen (8482b886ea) + + imap: Log errors via imap_client.event when possible + + +M src/imap/cmd-getmetadata.c +M src/imap/cmd-urlfetch.c +M src/imap/imap-client-hibernate.c +M src/imap/imap-client.c +M src/imap/imap-master-client.c +M src/imap/main.c + +2020-08-17 13:28:58 +0300 Timo Sirainen (218eaa07c9) + + imap: imap_hibernate_process_send() - Return error instead of logging it + + +M src/imap/imap-client-hibernate.c + +2020-08-17 15:28:00 +0300 Timo Sirainen (b4b3b41989) + + lib: Add str_to_timeval() + + +M src/lib/test-time-util.c +M src/lib/time-util.c +M src/lib/time-util.h + +2020-08-20 16:17:48 +0300 Timo Sirainen (ea91edd058) + + director: Use director_connection.event wherever possible + + This adds the "director(name): " log prefix to many log messages where it + didn't previously exist. The director name is now sometimes duplicated in + the log messages, but maybe that's good for clarity. + +M src/director/director-connection.c + +2020-08-20 16:11:56 +0300 Timo Sirainen (4b7d51bfd0) + + director: Avoid explicit log prefixes by logging via + director_connection.event + + +M src/director/director-connection.c + +2020-08-20 16:07:00 +0300 Timo Sirainen (716aab1678) + + director: Add director_connection.event + + +M src/director/director-connection.c + +2020-08-20 16:05:23 +0300 Timo Sirainen (057b8620d7) + + director: Add director_connection_set_name() change connection name + + +M src/director/director-connection.c + +2019-10-31 19:15:22 +0200 Timo Sirainen (b47636b619) + + director: Replace most of the i_error() logging with e_error() + + +M src/director/auth-connection.c +M src/director/director-connection.c +M src/director/director.c +M src/director/doveadm-connection.c +M src/director/login-connection.c +M src/director/mail-host.c +M src/director/notify-connection.c + +2019-10-31 19:10:22 +0200 Timo Sirainen (2795b4f95e) + + director: Replace i_warning() and i_info() logging with e_*() + + +M src/director/director-connection.c +M src/director/director-request.c +M src/director/director.c +M src/director/doveadm-connection.c +M src/director/mail-host.c +M src/director/main.c +M src/director/notify-connection.c +M src/director/user-directory.c + +2019-10-31 19:17:28 +0200 Timo Sirainen (5e6d04c952) + + director: Add auth_connection.dir + + +M src/director/auth-connection.c +M src/director/auth-connection.h +M src/director/main.c + +2019-10-31 19:09:35 +0200 Timo Sirainen (c9b8061af6) + + director: Add user_directory.director + + +M src/director/mail-host.c +M src/director/test-user-directory.c +M src/director/user-directory.c +M src/director/user-directory.h + +2019-10-31 19:06:46 +0200 Timo Sirainen (5107e7f89c) + + director: Add mail_host_list.dir + + +M src/director/director.c +M src/director/doveadm-connection.c +M src/director/mail-host.c +M src/director/mail-host.h + +2019-10-31 19:00:57 +0200 Timo Sirainen (9da9aa4cf4) + + director: Remove dir_debug() and director_debug + + +M src/director/director.c +M src/director/director.h +M src/director/main.c + +2019-10-31 18:59:57 +0200 Timo Sirainen (d861dab090) + + director: director-request: Add event and replace dir_debug() with e_debug() + + +M src/director/director-request.c + +2019-10-31 18:56:56 +0200 Timo Sirainen (7e4f1966bf) + + director: Replace most of the dir_debug() with e_debug() + + +M src/director/director-connection.c +M src/director/director.c + +2019-10-31 18:49:59 +0200 Timo Sirainen (97af941652) + + director: Add struct director.event + + +M src/director/director.c +M src/director/director.h +M src/director/main.c + +2018-11-07 16:51:49 -0800 Rosen Penev (5d88510b30) + + lib: Fix compilation with OpenSSL deprecated APIs disabled + + OpenSSL with no deprecated APIs does not implicitly include header files. + +M src/lib-dcrypt/dcrypt-openssl.c +M src/lib-ssl-iostream/iostream-openssl-context.c + +2020-08-07 11:11:21 -0400 Josef 'Jeff' Sipek (8b2455fe5e) + + lib: Always use the representative when comparing event's categories + + We need to be consistent about using the representative category pointer. + Otherwise, we may end up with duplicates in an event's categories array. + + Since an event's categories are conceptually a set, it is reasonable to + write event using code that assumes no duplicates. If duplicates are + present, it may lead to incorrect behavior or even crashes. + +M src/lib/lib-event.c + +2020-08-14 10:25:33 -0400 Josef 'Jeff' Sipek (942e4a1b58) + + lib: event-filter-parser - Use str_begins() to compare unit test error + strings + + Different versions of bison generate slightly different error strings, but + they always begin the same way. So, instead of comparing them let's only + compare the beginning. + +M src/lib/test-event-filter-parser.c + +2020-08-14 09:26:12 -0400 Josef 'Jeff' Sipek (320a207cc5) + + lib: event-filter-parser - YYERROR_VERBOSE has been deprecated since 2003 + + The proper way to enable verbose error messages is to use the parse.error + define. + +M src/lib/event-filter-parser.y + +2020-08-14 00:36:19 +0300 Timo Sirainen (92d767268c) + + lib: Add unit test for long log line splitting + + +M src/lib/test-failures.c + +2020-08-13 22:49:43 +0300 Timo Sirainen (e02f24ac33) + + lib-index: Remove log prefix from cache events + + Index events don't have a prefix either. The parent event likely already + contains the mailbox name, which should be enough. It's especially bad using + the full filesystem path in the event prefix, because it could be very long. + +M src/lib-index/mail-cache.c + +2020-08-13 22:47:02 +0300 Timo Sirainen (984e3d03b6) + + global: Make sure event log prefixes are sanitized and not excessively long + + It doesn't make sense to allow log prefixes to grow to kilobytes long, + especially from user-given input. + +M src/lib-http/http-client-queue.c +M src/lib-http/http-client-request.c +M src/lib-http/http-server-request.c +M src/lib-http/http-server-resource.c +M src/lib-smtp/smtp-client-command.c +M src/lib-smtp/smtp-client-transaction.c +M src/lib-smtp/smtp-server-recipient.c +M src/lib-storage/fail-mailbox.c +M src/lib-storage/index/index-storage.c + +2020-08-13 22:18:41 +0300 Timo Sirainen (812fab2981) + + lib: Fix sending log lines when prefix is larger than PIPE_BUF + + This caused the log line to be sent repeatedly to the log process, possibly + causing hundreds of duplicate log lines. + +M src/lib/failures.c + +2020-08-13 22:08:48 +0300 Timo Sirainen (172e23fecb) + + log: log_connection_handshake() - Handle i_stream_read()'s -2 return value + properly + + Although this shouldn't happen anymore after the previous change. + +M src/log/log-connection.c + +2020-08-13 19:26:23 +0300 Timo Sirainen (884b5c012c) + + log: Fix busy loop when a long line is logged + + If the line exceeded PIPE_MAX (4 kB usually), the process got into a busy + loop. It would still break out of it every 100ms and maybe handle some other + services' logging, but the service that logged the long line would be stuck. + This resulted in all those service processes also hanging because they were + waiting to be able to write to log. + +M src/log/log-connection.c + +2020-05-18 13:08:45 +0300 Aki Tuomi (199686daf5) + + auth: test-mech - Add tests for RPA and NTLM bug + + +M src/auth/test-mech.c + +2020-05-18 12:33:39 +0300 Aki Tuomi (fb246611e6) + + lib-ntlm: Check buffer length on responses + + Add missing check for buffer length. + + If this is not checked, it is possible to send message which causes read + past buffer bug. + + Broken in c7480644202e5451fbed448508ea29a25cffc99c + +M src/lib-ntlm/ntlm-message.c + +2020-05-06 13:40:36 +0300 Aki Tuomi (69ad3c902e) + + auth: mech-rpa - Fail on zero len buffer + + +M src/auth/mech-rpa.c + +2020-07-02 17:31:19 +0300 Timo Sirainen (19193f40b1) + + lib-mail: Fix handling trailing "--" in MIME boundaries + + Broken by 5b8ec27fae941d06516c30476dcf4820c6d200ab + +M src/lib-mail/message-parser.c +M src/lib-mail/test-message-parser.c + +2020-04-23 17:09:33 +0300 Timo Sirainen (be53a118e7) + + lib-mail: message-parser - Support limiting max number of MIME parts + + The default is to allow 10000 MIME parts. When it's reached, no more MIME + boundary lines will be recognized, so the rest of the mail belongs to the + last added MIME part. + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c +M src/lib-mail/message-parser.h +M src/lib-mail/test-message-parser.c + +2020-04-23 16:59:40 +0300 Timo Sirainen (7868f5f49b) + + lib-mail: message-parser - Support limiting max number of nested MIME parts + + The default is to allow 100 nested MIME parts. When the limit is reached, + the innermost MIME part's body contains all the rest of the inner bodies + until a parent MIME part is reached. + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c +M src/lib-mail/message-parser.h +M src/lib-mail/test-message-parser.c + +2020-04-23 16:50:56 +0300 Timo Sirainen (0f46088a1a) + + lib-mail, global: message_parser_init*() - Convert flags to settings + structure + + +M src/doveadm/doveadm-mail-fetch.c +M src/lib-imap/test-imap-bodystructure.c +M src/lib-imap/test-imap-envelope.c +M src/lib-mail/istream-attachment-extractor.c +M src/lib-mail/istream-binary-converter.c +M src/lib-mail/message-parser-from-parts.c +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c +M src/lib-mail/message-parser.h +M src/lib-mail/message-search.c +M src/lib-mail/message-snippet.c +M src/lib-mail/test-message-decoder.c +M src/lib-mail/test-message-parser.c +M src/lib-mail/test-message-part.c +M src/lib-storage/index/index-mail-headers.c +M src/plugins/fts/fts-build-mail.c + +2020-04-23 15:00:57 +0300 Timo Sirainen (a676cb539f) + + lib-mail: message-parser - Don't use memory pool for parser + + This reduces memory usage when parsing many MIME parts where boundaries are + being added and removed constantly. + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c + +2020-04-23 14:53:27 +0300 Timo Sirainen (a175d654c3) + + lib-mail: message-parser - Add boundary_remove_until() helper function + + +M src/lib-mail/message-parser.c + +2020-04-23 13:06:02 +0300 Timo Sirainen (8dbc754a31) + + lib-mail: message-parser - Optimize boundary lookups when exact boundary is + found + + When an exact boundary is found, there's no need to continue looking for + more boundaries. + +M src/lib-mail/message-parser.c + +2020-04-23 12:53:12 +0300 Timo Sirainen (729941c996) + + lib-mail: message-parser - Truncate excessively long MIME boundaries + + RFC 2046 requires that the boundaries are a maximum of 70 characters + (excluding the "--" prefix and suffix). We allow 80 characters for a bit of + extra safety. Anything longer than that is truncated and treated the same as + if it was just 80 characters. + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c +M src/lib-mail/test-message-parser.c + +2020-04-23 12:10:07 +0300 Timo Sirainen (02c7c6dbb5) + + lib-mail: message-parser - Minor code cleanup to finding the end of boundary + line + + +M src/lib-mail/message-parser.c + +2020-04-23 12:00:38 +0300 Timo Sirainen (24f0bfefdb) + + lib-mail: message-parser - Optimize appending new part to linked list + + +M src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c + +2020-04-23 11:36:48 +0300 Timo Sirainen (5ecadd3074) + + lib-mail: message-parser - Optimize updating children_count + + +M src/lib-mail/message-parser.c + +2020-04-23 11:34:22 +0300 Timo Sirainen (cb00e21fd7) + + lib-mail: message-parser - Change message_part_append() to do all work + internally + + +M src/lib-mail/message-parser.c + +2020-04-23 11:33:31 +0300 Timo Sirainen (e5830ae885) + + lib-mail: message-parser - Add a message_part_finish() helper function + + +M src/lib-mail/message-parser.c + +2020-04-23 11:47:18 +0300 Timo Sirainen (926742088a) + + lib-mail: Move message_parser_init_from_parts() handling to its own file + + This helps to see what code they have in common. + +M src/lib-mail/Makefile.am +A src/lib-mail/message-parser-from-parts.c +A src/lib-mail/message-parser-private.h +M src/lib-mail/message-parser.c + +2020-04-23 11:27:14 +0300 Timo Sirainen (6d77e00e4d) + + lib-mail: test-message-parser - Test that children_count is correct + + +M src/lib-mail/test-message-parser.c + +2020-04-23 11:14:04 +0300 Timo Sirainen (d4bb43a08a) + + lib-mail: test-message-parser - Add another test for boundary matching + + +M src/lib-mail/test-message-parser.c + +2020-08-12 11:58:07 +0300 Timo Sirainen (84b70b76a6) + + dict: Fix potential hang when iterating + + Broken by 2937287a72cffa8c709c22ede838058d48b61778 + +M src/dict/dict-commands.c +M src/dict/dict-connection.h + +2020-08-12 11:57:26 +0300 Timo Sirainen (1bbb54716a) + + lib: Clarify o_stream_set_flush_pending() comment related to corking + + +M src/lib/ostream.h + +2020-08-06 17:46:07 +0300 Timo Sirainen (75693aa152) + + lib: When clearing signal handlers, ignore the signals instead of restoring + defaults + + This is mainly happening in while the process is shutting down. Getting a + signal at a time when the normal signal handlers are gone isn't something + that is expected. It's better to just ignore the signal and let the process + to finish shutting down normally instead of getting killed. + + This should also fix some unit tests where the child processes were + sometimes dying with SIGTERM due to these race conditions. + +M src/lib-test/test-subprocess.c +M src/lib/lib-signals.c +M src/lib/lib-signals.h + +2020-08-03 13:21:14 +0300 Timo Sirainen (d0ea7f9f45) + + pop3-login: Fix the next command failing after unsuccessful AUTH + + If the AUTH command failed (e.g. bad password or proxying failure), the next + command was still processed as AUTH command. For example: + + auth plain . + -ERR [AUTH] Invalid base64 data in initial response quit + -ERR [AUTH] Unsupported authentication mechanism. + +M src/pop3-login/client-authenticate.c + +2020-08-04 12:37:45 +0300 Aki Tuomi (f491dea427) + + lib-compression: zstd - Check version + + If we are using older than 1.3.1 we emit warning if there is library + mismatch. This is because error codes will break. + +M src/lib-compression/iostream-zstd-private.h +M src/lib-compression/istream-zstd.c +M src/lib-compression/ostream-zstd.c + +2020-08-04 12:35:39 +0300 Aki Tuomi (1160ac3a37) + + lib-compression: zstd - Repair error codes if necessary + + libzstd version numbers were pinned on 1.3.1, if we are compiled against + version before that, and runtime is newer, we need to repair version + numbers. + + A horrible hack that only allows using 1.3.1+ with old code. + +M src/lib-compression/Makefile.am +A src/lib-compression/iostream-zstd-private.h +M src/lib-compression/istream-zstd.c +M src/lib-compression/ostream-zstd.c + +2020-08-05 14:35:52 +0300 Timo Sirainen (9ee1a10480) + + lib: Fix potential crash changing signal handlers after destroying ioloop + + +M src/lib/lib-signals.c + +2020-06-22 15:30:49 +0300 sergey.kitov (ddd93d7953) + + lib-index: Set event name for "Recreated index" + + +M src/lib-index/mail-index-write.c + +2020-07-21 13:32:19 -0400 Josef 'Jeff' Sipek (9a6bbb115a) + + global: Rely on fs_deinit() automatically freeing parent fs + + +M src/lib-fs/fs-metawrap.c +M src/lib-fs/fs-randomfail.c +M src/lib-fs/fs-sis-queue.c +M src/lib-fs/fs-sis.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/mail-crypt/fs-crypt-common.c + +2020-07-21 12:55:27 -0400 Josef 'Jeff' Sipek (e42b179cb8) + + lib-fs: Free parent fs generically + + +M src/lib-fs/fs-api.c + +2020-07-21 13:24:15 -0400 Josef 'Jeff' Sipek (09085ba9ba) + + mail-crypt: Use container_of() instead of casts for fs code + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/plugins/mail-crypt/fs-crypt-common.c + +2020-07-21 13:22:06 -0400 Josef 'Jeff' Sipek (af02f4005d) + + fs-compress: Use container_of() instead of casts + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/plugins/fs-compress/fs-compress.c + +2020-07-21 13:18:41 -0400 Josef 'Jeff' Sipek (efad611e18) + + lib-fs: sis - Use container_of() instead of casts + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/lib-fs/fs-sis.c + +2020-07-21 13:16:34 -0400 Josef 'Jeff' Sipek (e11855558a) + + lib-fs: sis-queue - Use container_of() instead of casts + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/lib-fs/fs-sis-queue.c + +2020-07-21 13:13:20 -0400 Josef 'Jeff' Sipek (4f1409f68e) + + lib-fs: randomfail - Use container_of() instead of casts + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/lib-fs/fs-randomfail.c + +2020-07-21 13:05:34 -0400 Josef 'Jeff' Sipek (fbfbbb3444) + + lib-fs: metawrap - Use container_of() instead of casts + + Being more explicit not only makes the code more explict, it makes it safer. + +M src/lib-fs/fs-metawrap.c + +2020-07-17 17:43:08 -0400 Josef 'Jeff' Sipek (8372b18e19) + + lib-fs: Add new deinit vfunc + + This is useful for tidying up anything just before freeing the struct fs. + For example, flushing dirty data in a write-back cache. + +M src/lib-fs/fs-api-private.h +M src/lib-fs/fs-api.c +M src/lib-fs/fs-dict.c +M src/lib-fs/fs-metawrap.c +M src/lib-fs/fs-posix.c +M src/lib-fs/fs-randomfail.c +M src/lib-fs/fs-sis-queue.c +M src/lib-fs/fs-sis.c +M src/lib-fs/fs-test.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/mail-crypt/fs-crypt.c +M src/plugins/mail-crypt/fs-mail-crypt.c + +2020-07-17 17:26:41 -0400 Josef 'Jeff' Sipek (9d59b32ff1) + + lib-fs: Rename deinit vfunc to free + + +M src/lib-fs/fs-api-private.h +M src/lib-fs/fs-api.c +M src/lib-fs/fs-dict.c +M src/lib-fs/fs-metawrap.c +M src/lib-fs/fs-posix.c +M src/lib-fs/fs-randomfail.c +M src/lib-fs/fs-sis-queue.c +M src/lib-fs/fs-sis.c +M src/lib-fs/fs-test.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/mail-crypt/fs-crypt-common.c +M src/plugins/mail-crypt/fs-crypt.c +M src/plugins/mail-crypt/fs-mail-crypt.c + +2020-04-26 22:27:52 +0300 Timo Sirainen (a92b4b21fa) + + lib, lib-master: Send updated event to stats if fields/categories change + + Based on code by Jeff Sipek + +M src/lib-master/stats-client.c +M src/lib-master/test-event-stats.c +M src/lib/lib-event-private.h +M src/lib/lib-event.c + +2020-04-28 18:48:07 +0300 Timo Sirainen (42c309013b) + + stats: Allow clients to update existing events with UPDATE command + + +M src/stats/client-writer.c + +2020-04-28 18:43:21 +0300 Timo Sirainen (f78e3f8bfb) + + lib: event_import*() - Allow importing duplicate data without using more + memory + + +M src/lib/lib-event.c + +2020-07-27 11:15:42 -0400 Josef 'Jeff' Sipek (21477aaefd) + + lib-master: Properly compare unit test output strings with expected values + + The I_MIN() mean that only the prefix was getting compared. + +M src/lib-master/test-event-stats.c + +2020-07-05 12:16:06 +0200 Stephan Bosch (6d9ff68a11) + + imap: cmd-notify - Do not try to notify for removable namespaces. + + It is not going to work anyway and it will cause a crash when the IMAP sync + code subsequently drops those namespaces as part of + mail_user_drop_useless_namespaces(). This does not drop the earlier created + mailbox_list_notify object, causing its mailbox list index view object to + remain open. This causes the following panic: + + Panic: Leaked view for index /dovecot.list.index: Opened in + mailbox-list-index-notify.c:142 + +M src/imap/cmd-notify.c + +2020-07-07 01:37:54 +0200 Stephan Bosch (08398c29dd) + + lib-storage: Add mail_namespace_is_removable() and use it. + + +M src/lib-storage/mail-namespace.h +M src/lib-storage/mail-user.c + +2020-07-05 12:47:05 +0200 Stephan Bosch (fbeeffeef8) + + lib-index: mail-index-view - Record caller source filename and line for + mail_index_view_clone/dup_private(). + + Before, this was only recorded for mail_index_view_open(), which caused the + view leak panic to show a useless source location, e.g.: + + Panic: Leaked view for index : Opened in (null):0 + +M src/lib-index/mail-index-view-private.h +M src/lib-index/mail-index-view.c + +2020-07-16 16:30:00 -0400 Josef 'Jeff' Sipek (622a3427eb) + + lib-fs: Set debug on event from settings + + +M src/lib-fs/fs-api.c + +2020-06-29 11:56:02 +0200 Stephan Bosch (49daa90133) + + imap: cmd-notify - Fix segfault ocurring upon NOTIFY error. + + The client_send_line() function in imap_client_notify_more() uses notify_ns + to obtain access to client struct, while that is available as a direct + function parameter. And notify_ns is invalid at the end of the for loop, so + dereferencing it causes a segmentation fault. + +M src/imap/imap-notify.c + +2020-07-31 18:39:54 +0300 Aki Tuomi (3fd7b277b2) + + lib-compression: test-compression - Do not fail on missing handlers + + +M src/lib-compression/test-compression.c + +2020-07-31 09:51:35 +0300 Aki Tuomi (b8ab80ca29) + + lib-compression: Fix support for older libzstd + + +M m4/want_zstd.m4 +M src/lib-compression/istream-zstd.c +M src/lib-compression/ostream-zstd.c + +2020-07-31 09:51:16 +0300 Aki Tuomi (cf227c6500) + + lib-compression: test-compression - Ensure compression handler is found by + file extension + + +M src/lib-compression/test-compression.c + +2020-06-10 15:53:41 +0300 Timo Sirainen (0447775763) + + fs-compress: Try all compression formats when decompressing + + Not just the specified compression format. + +M src/plugins/fs-compress/fs-compress.c + +2020-06-10 15:48:06 +0300 Timo Sirainen (4cd01cefd8) + + fs-compress: Rename compress_fs.handler to compress_handler + + +M src/plugins/fs-compress/fs-compress.c + +2020-07-06 14:54:48 +0300 Aki Tuomi (15786d88fb) + + lib-compression: test-compression - Add test for tiny invalid data + + Ensure compression handlers return EINVAL when reading less than header size + data. + +M src/lib-compression/test-compression.c + +2020-07-06 19:55:10 +0300 Aki Tuomi (ba73b7f0ea) + + lib-compression: istream-xz - Fix header reading + + If file was smaller than xz magic size, we would get EPIPE instead of + EINVAL. + +M src/lib-compression/istream-lzma.c + +2020-07-06 15:42:26 +0300 Aki Tuomi (6aaafffe3e) + + lib-compression: istream-zstd - Fix header reading + + If file was smaller than zstd magic size, we would get EPIPE instead of + EINVAL. + +M src/lib-compression/istream-zstd.c + +2020-07-06 15:41:28 +0300 Aki Tuomi (658bc80f44) + + lib-compression: istream-zlib - Fix header reading + + If data size was 0 it would give EPIPE instead of EINVAL + +M src/lib-compression/istream-bzlib.c + +2020-07-06 19:16:50 +0300 Aki Tuomi (58c9dda4c7) + + lib-compression: istream-lz4 - Fix header reading + + If data size was smaller than header size, lz4 reading would return -1 + without error indicating EOF instead of EINVAL. + + Broken in c1a43c6098f0caf11e8a2c1889227ec3969e410e + +M src/lib-compression/istream-lz4.c + +2020-07-06 10:12:39 +0300 Aki Tuomi (829ba2c7da) + + lib-compression: ostream-zstd - Remove o_stream_zstd_error + + It has only one private caller. + +M src/lib-compression/ostream-zstd.c + +2020-07-06 10:11:51 +0300 Aki Tuomi (2341a03534) + + lib-compression: ostream-zstd - Fix error handling + + The error code handling in ZSTD was wrong, because zstd returns error codes + as large unsigned numbers which need to be retrieved with helper function. + +M src/lib-compression/ostream-zstd.c + +2020-07-06 10:10:00 +0300 Aki Tuomi (286fa302a4) + + lib-compression: istream-zstd - Remove i_stream_zstd_error + + It has only one private caller. + +M src/lib-compression/istream-zstd.c + +2020-07-03 09:45:09 +0300 Aki Tuomi (a36b524470) + + lib-compression: Fix error handling for zstd + + The error code handling in ZSTD was wrong, because zstd returns error codes + as large unsigned numbers which need to be retrieved with helper function. + +M src/lib-compression/istream-zstd.c + +2020-07-06 11:48:13 +0200 Markus Valentin (6e1f9304ca) + + lib-compression: Add "unsupported" compression + + This new compression is only used for testing purposes. + +M src/lib-compression/compression.c + +2020-06-30 14:28:03 +0200 Markus Valentin (e6a0c94c08) + + lib-compression: Change compression_lookup_handler_from_ext return value + + In order to improve the error handling for + compression_lookup_handler_from_ext calls return an integer rather then a + pointer to struct compression_handler. + +M src/lib-compression/compression.c +M src/lib-compression/compression.h +M src/lib-compression/test-compression.c +M src/plugins/zlib/zlib-plugin.c + +2020-06-30 14:21:22 +0200 Markus Valentin (b6d3aedbd4) + + lib-compression: Change compression_lookup_handler return value + + In order to improve the error handling for compression_lookup_handler calls + return an integer rather then a pointer to struct compression_handler. + + This change also prevents crashes when trying to use a compression format + that isn't compiled in. + +M src/lib-compression/compression.c +M src/lib-compression/compression.h +M src/lib-compression/test-compression.c +M src/plugins/fs-compress/fs-compress.c +M src/plugins/imap-zlib/imap-zlib-plugin.c +M src/plugins/zlib/zlib-plugin.c + +2020-07-29 10:40:17 +0300 Timo Sirainen (af1a6be96c) + + pop3: Fix assert-crash when using pop3_deleted_flag + + Broken by 6d18044e1408ce98aa8ef145a9f85895829a7bc7 + + Fixes: Panic: file seq-range-array.c: line 472 (seq_range_array_invert): + assertion failed: (range[count-1].seq2 <= max_seq) + +M src/pop3/pop3-commands.c + +2020-07-15 12:42:59 +0300 Timo Sirainen (581bea0f68) + + pop3-login: Fix handling commands that are sent in multiple IP packets + + This happened especially if the commands were long, like XCLIENT. + + This got broken by recent pop3-login changes. + +M src/pop3-login/client-authenticate.c +M src/pop3-login/client-authenticate.h +M src/pop3-login/client.c +M src/pop3-login/client.h + +2020-07-10 11:00:14 +0300 Aki Tuomi (e6f8953a6e) + + lib-test: Rename s1, s2 to _temp_s1, _temp_s2 in test_assert_strcmp_idx + + Some test code uses s1 and s2 as variable names. + + Broken in 449539dc52070bebde3ae7babe96e6e272dd7101 + +M src/lib-test/test-common.h + +2020-07-09 09:38:37 +0300 Aki Tuomi (f19d3ad349) + + pop3-login: Use struct client authenticating member + + This is what should be used instead of introducing our own. + + Broken in 6c55437036b3de11804eb68f66d84cb164c33d63 + +M src/pop3-login/client-authenticate.c +M src/pop3-login/client.c +M src/pop3-login/client.h + +2020-07-09 09:39:48 +0300 Aki Tuomi (7ca712bb6f) + + pop3-login: Consume line after mech probe + + Otherwise we read next line empty and that causes -ERR. + + Broken in 6c55437036b3de11804eb68f66d84cb164c33d63 + +M src/pop3-login/client-authenticate.c + +2020-07-08 10:59:48 +0300 Aki Tuomi (1a1b810e2d) + + lib: istream - Do not attempt read past end in i_stream_next_line_finish + + +M src/lib/istream.c +M src/lib/test-istream.c + +2020-07-08 12:58:56 +0300 Aki Tuomi (449539dc52) + + lib-test: test_assert_strcmp_idx - Avoid double evaluation + + +M src/lib-test/test-common.h + +2020-07-08 08:55:31 +0300 Aki Tuomi (fb2379c54d) + + pop3-login: Read command more carefully + + Ensure we don't consume '\n' or '\0' when reading command, but that we + consume '\r' otherwise i_stream_read_next_line won't work properly. + +M src/pop3-login/client.c + +2020-07-01 12:11:43 -0400 Josef 'Jeff' Sipek (1accaf55c2) + + lib: Properly free event filter in unit tests + + +M src/lib/test-event-filter-parser.c + +2020-07-03 09:11:09 +0300 Aki Tuomi (5a38eafa70) + + lib: event-filter-lexer - Ignore unused parameters + + +M src/lib/event-filter-lexer.l + +2020-05-19 22:08:25 +0300 Timo Sirainen (757255c505) + + lib: lib-signals - Use persistent signal IOs + + When ioloop is switched, don't remove the IO from old ioloop and create it + to new ioloop. Just use persistent IOs for each separate ioloop. This can + reduce a lot of syscalls when ioloops are often switched. + +M src/lib/lib-signals.c +M src/lib/lib-signals.h + +2020-05-19 21:30:18 +0300 Timo Sirainen (b25bd31c70) + + lib: lib-signals - Add struct signal_ioloop + + This struct tracks which ioloops have signal handlers. + +M src/lib/lib-signals.c + +2020-05-19 21:02:38 +0300 Timo Sirainen (bda17bd783) + + lib: lib-signals - Replace LIBSIG_FLAG_NO_IOLOOP_AUTOMOVE with + LIBSIG_FLAG_IOLOOP_AUTOMOVE + + There aren't many signal handlers that actually want to move automatically. + It's just causing accidental bugs when signal handlers are run in unexpected + ioloops. + +M src/lib-test/test-subprocess.c +M src/lib/child-wait.c +M src/lib/lib-signals.c +M src/lib/lib-signals.h +M src/lib/test-lib-signals.c + +2020-06-24 10:30:21 +0300 Timo Sirainen (68210f3fa0) + + lib: lib-signals - Fix creating non-automove signal handlers before ioloop + + +M src/lib/lib-signals.c + +2020-05-19 21:50:25 +0300 Timo Sirainen (aa05159613) + + lib: Add io_loop_add/remove_destroy_callback() + + +M src/lib/ioloop.c +M src/lib/ioloop.h + +2020-07-02 10:09:49 +0300 Aki Tuomi (21ea4c6033) + + lib: event-filter - Use i_fatal for fatal error handling + + +M src/lib/event-filter-lexer.l + +2020-07-02 09:56:15 +0300 Aki Tuomi (ef7cec2957) + + lib: event-filter - Disable some more compiler warnings + + +M src/lib/event-filter-lexer.l + +2020-07-02 09:55:31 +0300 Aki Tuomi (f3c879817d) + + lib: event-filter - Handle allocations + + This allows us to use Dovecot specific memory error handling when + allocations fail. Also squashes compiler warnings. + +M src/lib/event-filter-lexer.l + +2020-06-30 14:02:34 +0300 Aki Tuomi (6c55437036) + + pop3-login: Read SASL-IR properly + + This fixes issue where login would fail if SASL-IR message would be too + long. + +M src/pop3-login/client-authenticate.c +M src/pop3-login/client-authenticate.h +M src/pop3-login/client.c +M src/pop3-login/client.h + +2020-06-30 14:01:12 +0300 Aki Tuomi (c703c8ff58) + + pop3-login: Read command separately + + Simplifies next commit + +M src/pop3-login/client.c + +2020-07-01 14:49:36 +0300 Aki Tuomi (b31bbec95b) + + auth: db-lua - Fix user iteration + + The old code did not leave the stack empty after finishing up, that would + lead into stack being left dirty and accumulating per each call. + +M src/auth/db-lua.c + +2020-07-01 13:18:03 +0300 Aki Tuomi (6e84cc3cd9) + + auth: db-lua - Always set callback when iterating + + +M src/auth/db-lua.c + +2020-06-26 18:31:11 +0300 Aki Tuomi (c76a5af14a) + + lib-lua: Register panic handler + + +M src/lib-lua/dlua-script.c + +2020-06-26 18:27:18 +0300 Aki Tuomi (3e11b97c63) + + auth: db-lua - Ensure stack is empty at end + + +M src/auth/db-lua.c + +2020-06-26 18:29:46 +0300 Aki Tuomi (21668efa7e) + + auth: db-lua - Pop dovecot after registering + + +M src/auth/db-lua.c + +2020-06-26 12:21:40 +0300 Aki Tuomi (919c5103b9) + + auth: db-lua - Pop result after lookup + + When doing lookups, the lookup result was not popped. + +M src/auth/db-lua.c + +2020-06-26 12:16:31 +0300 Aki Tuomi (d9dd3c2798) + + lib-lua: Add dlua_dump_stack + + Useful for debugging why stack leaks + +M src/lib-lua/dlua-script.c +M src/lib-lua/dlua-script.h + +2020-06-29 09:55:15 +0300 Aki Tuomi (dd87051e9e) + + configure: Properly fail if bison or flex is missing + + If bison or flex is missing, and are needed, fail configure. + +M configure.ac + +2020-06-26 10:08:27 -0400 Josef 'Jeff' Sipek (9a6e303a95) + + Ignore ylwrap + + +M .gitignore + +2020-06-25 12:16:44 -0400 Josef 'Jeff' Sipek (1e4f9b6566) + + lib: Rename event filter files to be less redundantly named + + +M .gitignore +M src/lib/Makefile.am +R098 src/lib/event-filter-parser-lexer.l src/lib/event-filter-lexer.l +R100 src/lib/event-filter-parser-parser.y src/lib/event-filter-parser.y + +2020-06-10 16:44:19 -0400 Josef 'Jeff' Sipek (b25cea63de) + + lib: event filter parser unit tests + + +M src/lib/Makefile.am +A src/lib/test-event-filter-parser.c +M src/lib/test-lib.inc + +2020-05-26 11:35:38 -0400 Josef 'Jeff' Sipek (fcba1d5307) + + lib: Switch event filtering to the new filter language + + +M src/lib-master/stats-client.c +M src/lib-master/test-event-stats.c +M src/lib/Makefile.am +D src/lib/event-filter-parser.c +M src/lib/event-filter.c +M src/lib/event-filter.h +M src/stats/client-writer.c +M src/stats/test-client-reader.c +M src/stats/test-client-writer.c +M src/stats/test-stats-metrics.c + +2020-05-29 13:09:22 -0400 Josef 'Jeff' Sipek (789484d40c) + + lib: Implement a new event filter language + + Currently, it is not used by anything. + + In general, the new syntax is very SQL-like. It is a boolean expression + made up of key-value comparisons, parentheses, and boolean connectors AND, + OR, and NOT. + + The key-value comparisons are of the form: + + + + Where the key is one of: + + (1) "event" + (2) "category" + (3) "source_location" + (4) a field name + + The operator is one of: + + (1) = + (2) > + (3) < + (4) >= + (5) <= + + And the value is either: + + (1) a single word token, or + (2) a quoted string + + For example, to match events with the event name "abc", we would use one of + the following expressions. Note that white space is not significant between + tokens, and therefore the following are all equivalent. + + event=abc + event="abc" + event = abc + event = "abc" + + To match events with the name "abc" that include the "imap" category, we'd + use: + + event=abc AND category=imap + + To match events with the name "abc" that either include the "imap" or "pop3" + categories, we'd use: + + event=abc AND (category=imap OR category=pop3) + + Field names don't have any special prefix. Therefore, to match events than + have the field bytes_out equal to 10, we'd use: + + bytes_out=10 + + To match events with bytes_out greater than or equal to 10, we'd use: + + bytes_out>=10 + +M .gitignore +M configure.ac +M src/lib/Makefile.am +A src/lib/event-filter-parser-lexer.l +A src/lib/event-filter-parser-parser.y +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2020-06-17 15:16:48 -0400 Josef 'Jeff' Sipek (09a26e31a2) + + lib: Allow event filter nodes to represent a log type category + + +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2020-06-17 15:01:28 -0400 Josef 'Jeff' Sipek (64874eaacb) + + lib: Future-proof the log type to event filter log type mapping + + The mapping assumed that: + + EVENT_FILTER_LOG_TYPE_FOO == (1 << LOG_TYPE_FOO) + + While that is true today and will likely continue to be true in the future, + there's no reason why we can't future proof it and ensure that it always + works. + +M src/lib/event-filter.c + +2020-05-28 17:43:21 -0400 Josef 'Jeff' Sipek (fc330b22cf) + + lib: Expose event_filter_category_to_log_type to the rest of event filter + code + + +M src/lib/event-filter-private.h +M src/lib/event-filter.c + +2020-05-28 17:22:09 -0400 Josef 'Jeff' Sipek (61cb32860f) + + lib: Add internal code for event filter le/lt/ge/gt comparisons + + These are currently unreachable. + +M src/lib/event-filter.c + +2020-05-22 13:08:24 -0400 Josef 'Jeff' Sipek (4ba261b738) + + lib: Rewrite event filter internals to use an abstract-syntax-tree + + +M src/lib/Makefile.am +A src/lib/event-filter-private.h +M src/lib/event-filter.c + +2020-05-11 14:43:15 -0400 Josef 'Jeff' Sipek (623031f7e9) + + stats: Fail to load with empty metric filters + + +M src/stats/stats-settings.c + +2020-04-21 10:32:32 -0400 Josef 'Jeff' Sipek (15ff31c2fe) + + stats: replace metric { } filtering with the common filter language + + +M src/stats/stats-metrics.c +M src/stats/stats-settings.c +M src/stats/stats-settings.h +M src/stats/test-client-reader.c +M src/stats/test-client-writer.c +M src/stats/test-stats-metrics.c + +2020-05-14 15:11:35 -0400 Josef 'Jeff' Sipek (a58a505d91) + + lib: Change event_filter_parse() filter arg to a single pointer + + Instead of allocating a new filter, fill in a passed in one. + +M src/lib-master/master-service-settings.c +M src/lib-master/master-service.c +M src/lib/event-filter-parser.c +M src/lib/event-filter.h + +2020-05-14 13:04:10 -0400 Josef 'Jeff' Sipek (5535938ae4) + + lib: Assert that we aren't trying to match using filter framents + + +M src/lib/event-filter.c + +2020-05-14 13:03:52 -0400 Josef 'Jeff' Sipek (fdff11be6c) + + lib: Add event_filter_create_fragment() + + +M src/lib/event-filter.c +M src/lib/event-filter.h + +2020-04-21 10:08:46 -0400 Josef 'Jeff' Sipek (891615285d) + + lib: Move event filter query language from lib-master + + This way we can use it elsewhere. + +M src/lib-master/master-service-settings.c +M src/lib-master/master-service-settings.h +M src/lib-master/master-service.c +M src/lib/Makefile.am +A src/lib/event-filter-parser.c +M src/lib/event-filter.h + +2020-04-21 11:05:58 -0400 Josef 'Jeff' Sipek (f3d6ba1bb8) + + stats: openmetrics shouldn't abuse metric { } filter strings + + Once upon a time it was thought that it was a good idea to output labels for + openmetrics metrics based on the fields used in the filter { } sub-block. + For the most part, this is not useful since the labels are going to be + either (1) always the same, or (2) one of several values. + + For example, consider the following metric block: + + metric foo { + event_name = something + ... + filter { + abc = BAR + def = BAZ* + } + } + + The value of 'abc' will *always* be 'BAR' for this metric, therefore it is + useless to include it. + + The value of 'def' will always start with 'BAZ' for this metric. While it + may be tempting to justify this usage, the group_by provides a superset of + the functionality. In other words, the following config snipped will + provide a superset of the same information. + + metric foo { + event_name = something + ... + filter { + abc = BAR + def = BAZ* + } + + group_by = abc def + } + + Therefore, this filter { } sub-block labeling support is redundant and can + be safely removed. + +M src/stats/stats-service-openmetrics.c + +2020-05-11 14:07:11 -0400 Josef 'Jeff' Sipek (43159ecb2c) + + lib: Add a way to merge filter queries with an overridden context + + This allows the consumers to construct a filter without setting the context + on each query, and then when merging it with another query "filling in" the + context on the fly. + +M src/lib/event-filter.c +M src/lib/event-filter.h + +2020-05-11 14:03:52 -0400 Josef 'Jeff' Sipek (a21b38c645) + + lib: Better document event filter iteration behavior + + +M src/lib/event-filter.h + +2020-05-29 09:53:53 +0300 Aki Tuomi (225bbb2fa6) + + auth: auth-worker-client - Fix whitespace formatting + + +M src/auth/auth-worker-client.c + +2020-05-29 09:52:23 +0300 Aki Tuomi (2bca51fb86) + + auth: auth-worker-client - Remove global auth_worker_client + + All should go through connection list instead. + + Broken in 317cb8aa981f856770057e23aeba98a33afc033a + +M src/auth/auth-worker-client.c + +2019-01-29 01:08:21 +0100 Stephan Bosch (33658141bb) + + lib-http: http-client - Fix assert panic occurring for shared clients. + + Occurs as a race condition between connections becoming idle and new + connections being set up. + + Panic was: + + Panic: file http-client-queue.c: line 373 + (http_client_queue_connection_attempt): assertion failed: + (http_client_peer_addr_cmp (&(*peer_idx)->shared->addr, addr) != 0) + +M src/lib-http/http-client-queue.c + +2020-05-26 19:22:52 +0300 Timo Sirainen (2937287a72) + + dict: Delay uncorking ostream in iteration callback + + +M src/dict/dict-commands.c + +2020-06-15 10:33:53 +0300 Timo Sirainen (8a31ae84ad) + + lib-storage: istream-mail - Fix assert-crash on handling corrupted mail size + + In some situations the "Cached message size smaller than expected" error + handling could have resulted in: + + Panic: file istream.c: line 315 (i_stream_read_memarea): assertion failed: + (old_size <= _stream->pos - _stream->skip) + +M src/lib-storage/index/istream-mail.c + +2020-05-26 19:09:38 +0300 Timo Sirainen (f5790ecaa6) + + dict-client: Fix potential iterator double-free + + client_dict_iterate_free() didn't really work properly, because of: + + ctx->finished = TRUE; + client_dict_iter_api_callback(ctx, cmd, extra_args); + client_dict_iterate_free(ctx); + + Here finished=TRUE is set first (and it needs to be set first). Afterwards + client_dict_iter_api_callback() internally calls + client_dict_iterate_deinit(), which can end up freeing the iterator. + +M src/lib-dict/dict-client.c + +2020-05-26 18:59:38 +0300 Timo Sirainen (ed47536cf2) + + dict-client: Rename struct dict_connection to dict_client_connection + + dict server already has struct dict_connection. This naming conflict caused + problems with gdb debugging. + +M src/lib-dict/dict-client.c + +2020-05-18 20:34:27 +0300 Timo Sirainen (66610c9f00) + + dict: Cork the output while writing iteration output + + This reduces system CPU usage by avoiding many tiny write() syscalls. + + Broken by 2ff2da52146609f4459bd0f7fd603e13400cb85e + +M src/dict/dict-commands.c + +2020-04-28 11:51:16 +0300 Timo Sirainen (c362e6dfd9) + + fts: Add fts category + + For now mainly so that the fts drivers' categories can inherit from it. + +M src/plugins/fts/fts-api.c +M src/plugins/fts/fts-api.h + +2020-06-11 12:59:14 +0300 Timo Sirainen (203b2b709b) + + imap: Fix assert-crash in COPY/MOVE when storage doesn't return UIDs + + For example copying mails into virtual storage crashed. + + Broken by 09413e35f764a2898cbc26cea94218eed6df5cbf + + Fixes: Panic: file cmd-copy.c: line 152 (fetch_and_copy): assertion failed: + (copy_ctx->copy_count == seq_range_count(©_ctx->saved_uids)) + +M src/imap/cmd-copy.c + +2020-06-09 11:40:53 +0300 Timo Sirainen (0fb7f89740) + + lib-compression: istream-zstd - Fix infinite loop when istream is + nonblocking + + +M src/lib-compression/istream-zstd.c + +2020-06-04 13:15:11 +0300 Aki Tuomi (87f109d404) + + lib-oauth2: oauth-jwt - Ensure / and . are escaped in kid + + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-06-04 10:41:32 +0300 Aki Tuomi (654ade00c1) + + dovecot-oauth2.conf.ext: Update to match code + + +M doc/example-config/dovecot-oauth2.conf.ext + +2020-06-04 10:23:36 +0300 Aki Tuomi (92684902de) + + auth: db-oauth2 - Add more performant defaults for lib-http + + +M src/auth/db-oauth2.c + +2020-06-03 15:40:40 +0300 Aki Tuomi (b196135db1) + + lib-oauth2: Use azp to find token + + This validates that the token is actually for us and also allows having + multiple tokens with same ID but different issuer. + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-06-03 15:40:04 +0300 Aki Tuomi (ebe460f7c2) + + lib-oauth2: Validate signature in jwt body process + + This way we can utilize fields from body with validation. + +M src/lib-oauth2/oauth2-jwt.c + +2020-06-03 15:35:48 +0300 Aki Tuomi (fc708711c8) + + lib-oauth2: Rename algo to alg + + It's the field name. + +M src/lib-oauth2/oauth2-jwt.c + +2020-06-02 15:59:37 +0300 Aki Tuomi (4b7d893712) + + lib-oauth2: Add iss validation support + + +M src/auth/db-oauth2.c +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/oauth2.h +M src/lib-oauth2/test-oauth2-jwt.c + +2020-06-02 15:52:34 +0300 Aki Tuomi (b4dd39cce4) + + lib-oauth2: Ensure token algorithm matches with key + + Otherwise we might mistakenly use key that is not intended for the token. + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-06-02 16:07:48 +0300 Aki Tuomi (a93c1dbfdf) + + lib-oauth2: oauth2-jwt - Always uppercase algorithm + + +M src/lib-oauth2/oauth2-jwt.c + +2020-05-27 15:41:22 +0300 Aki Tuomi (b219069e81) + + lib-dcrypt: dcrypt-openssl - Add helper macro for error_r handling + + Avoids missing NULL checks for error_r. + +M src/lib-dcrypt/dcrypt-openssl.c + +2020-05-27 12:16:25 +0200 Stephan Bosch (dcfd2a9177) + + lib-signals: Fix lib_signals_set_expected(). + + The function made no sense at all. + + Problem found by Coverity. + +M src/lib/lib-signals.c + +2020-04-16 07:35:25 +0200 Markus Valentin (53155cad72) + + lib-sql: driver-cassandra - Handle more Cassandra errors as uncertain + + Treat CASS_ERROR_LIB_WRITE_ERROR as uncertain error. + +M src/lib-sql/driver-cassandra.c + +2020-04-16 07:32:36 +0200 Markus Valentin (c3d98cebbd) + + lib-sql: driver-cassandra - Extract uncertain ascertainment to function + + +M src/lib-sql/driver-cassandra.c + +2020-05-08 03:02:22 +0300 Juha-Petri Tyrkkö (ce724fc647) + + lib-fs: Prevent the release of a nonexistent dict. + + +M src/lib-fs/fs-dict.c + +2020-05-27 09:09:45 +0300 Aki Tuomi (2acca6a60d) + + auth: db-oauth2 - Remove extra oauth2 prefix from log messages + + +M src/auth/db-oauth2.c + +2020-05-26 12:46:29 +0300 Aki Tuomi (139fb234bb) + + auth, lib-oauth2: Add local introspection mode + + Local introspection attempts to decode token always. This will also happen + with password grant, saving an extra roundtrip to oauth2 server. + +M src/auth/db-oauth2.c +M src/lib-oauth2/oauth2.h + +2020-05-26 09:53:26 +0300 Aki Tuomi (b2eed05ed0) + + auth: db-oauth2 - Use common code for lookup and password grant + + +M src/auth/db-oauth2.c + +2020-05-26 13:38:09 +0300 Aki Tuomi (1cb8ec93cf) + + auth: db-oauth2 - Clarify how introspect gets called + + This should make it more obvious when introspection actually gets called + after lookup. + + Introspection failure is now also moved earlier, before the request would + fail later because not all fields are available. + +M src/auth/db-oauth2.c + +2020-05-26 12:12:32 +0300 Aki Tuomi (15c893ea47) + + auth: db-oauth2 - Add token parameter to db_oauth2_local_validation + + +M src/auth/db-oauth2.c + +2020-05-25 21:42:08 +0300 Aki Tuomi (db7f5e6e54) + + auth: db-oauth2 - Move db_oauth2_local_validation + + Simplifies next change + +M src/auth/db-oauth2.c + +2020-05-25 21:47:35 +0300 Aki Tuomi (9e2507637e) + + auth: db-oauth2 - Move db_oauth2_lookup_continue + + Simplifies next change + +M src/auth/db-oauth2.c + +2020-05-26 21:24:02 +0300 Aki Tuomi (124861cc78) + + auth: db-oauth2 - Do not fallback into remote validation anymore + + It makes no sense anymore with introspection_mode=local. One should make + another passdb. + +M src/auth/db-oauth2.c + +2020-05-25 21:18:45 +0300 Aki Tuomi (de757d9e27) + + auth: db-oauth2 - Fix whitespace issue + + +M src/auth/db-oauth2.c + +2020-05-26 21:22:51 +0300 Aki Tuomi (e91e4a64ed) + + lib-oauth2: Use hash instead of hash2 + + Hash2 doesn't work as we want. Fixes key caching to actually work. + +M src/lib-oauth2/oauth2-key-cache.c + +2020-05-25 16:19:14 +0300 Aki Tuomi (bf25eab15e) + + lib-oauth2: Allow nbf and iat to be 0 + + Some implementations set these intentionally to 0. + +M src/lib-oauth2/oauth2-jwt.c +M src/lib-oauth2/test-oauth2-jwt.c + +2020-05-01 17:26:14 +0200 Stephan Bosch (0c10ac7534) + + lmtp: Support forwarding passdb's forward_* fields via RCPT TO XRCPTFORWARD + parameter. + + +M src/lmtp/lmtp-client.c +M src/lmtp/lmtp-commands.c +M src/lmtp/lmtp-common.h +M src/lmtp/lmtp-local.c +M src/lmtp/lmtp-proxy.c +M src/lmtp/lmtp-recipient.h + +2020-05-01 17:26:03 +0200 Stephan Bosch (82bf153436) + + lmtp: lmtp-proxy - Adjust RCPT parameter amendment code for expansion. + + +M src/lmtp/lmtp-proxy.c + +2020-05-01 17:25:46 +0200 Stephan Bosch (8cbb7b1310) + + lmtp: lmtp-proxy - Wait for client connection login before submitting RCPT + command. + + This allows evaluating the server capabilities while composing the RCPT + command. + +M src/lmtp/lmtp-proxy.c + +2020-05-01 17:25:27 +0200 Stephan Bosch (4289df7858) + + lmtp: lmtp-proxy - Make LMTP connection object available in proxy connection + struct. + + +M src/lmtp/lmtp-proxy.c + +2020-05-02 00:05:06 +0200 Stephan Bosch (2c9a0e54d6) + + lmtp: lmtp-client - Base client trust on the real remote IP. + + LMTP uses real_remote_ip for checking the trust. This means: + * LMTP proxy checks MTA's IP address + * LMTP backend checks LMTP proxy's IP address + * If haproxy is used in front of this LMTP server, the haproxy's IP address + is + checked. This may not be what is always wanted, but in LMTP backend it + wouldn't be correct to check the original client IP (= MTA IP) either. + +M src/lmtp/lmtp-client.c + +2020-04-26 11:02:47 +0200 Stephan Bosch (5e11257b83) + + lib-storage: mail-storage-service - Add support for sending forward_fields + in userdb lookup. + + +M src/lib-storage/mail-storage-service.c +M src/lib-storage/mail-storage-service.h + +2020-04-26 10:57:57 +0200 Stephan Bosch (91dfc52315) + + lib-auth: auth-master - Add support for sending forward_fields. + + +M src/lib-auth/auth-master.c +M src/lib-auth/auth-master.h + +2020-04-30 23:57:41 +0200 Stephan Bosch (d2a8e4e2e0) + + lib-smtp: smtp-client-connection - Allow smtp_client_connection_connect() to + be called several times. + + This change allows calling smtp_client_connection_connect() several times + with different login callbacks. If the connection is already available, the + provided login callback is called almost immediately from the ioloop. This + way, several parallel asynchronous activities using the same connection can + wait for its availability and don't need to check whether it is available + already. This is mostly useful to obtain the capabilities of the server. + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2020-05-01 13:02:57 +0200 Stephan Bosch (05828ad2c1) + + lib-smtp: smtp-client-connection - Record login reply. + + +M src/lib-smtp/smtp-client-connection.c +M src/lib-smtp/smtp-client-private.h + +2020-04-22 02:27:05 +0200 Stephan Bosch (d0fb4283ec) + + lib-smtp: smtp-params - Add support for xtext-encoding/decoding extra + parameters. + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 23:24:21 +0200 Stephan Bosch (dc3de46652) + + lib-smtp: smtp-params - Split off smtp_params_equal() from + smtp_params_rcpt_equal(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 23:03:57 +0200 Stephan Bosch (b9797261bb) + + lib-smtp: smtp-params - Remove code duplication between + smtp_params_*_write(). + + +M src/lib-smtp/smtp-params.c + +2020-04-22 22:55:54 +0200 Stephan Bosch (8ec6e1101b) + + lib-smtp: smtp-params - Remove code duplication between + smtp_params_*_copy(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 22:32:55 +0200 Stephan Bosch (c86fd10a18) + + lib-smtp: smtp-params - Remove code duplication between + smtp_params_*_drop_extra(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 22:26:25 +0200 Stephan Bosch (6f68a5d763) + + lib-smtp: smtp-params - Remove code duplication between + smtp_params_*_add_extra(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 22:15:43 +0200 Stephan Bosch (5830426484) + + lib-smtp: smtp-params - Remove code duplication between + smtp_params_*_get_extra(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h + +2020-04-22 21:52:14 +0200 Stephan Bosch (4a2bfa7b95) + + lib-smtp: smtp-syntax - Add smtp_xtext_decode(). + + +M src/lib-smtp/smtp-syntax.c +M src/lib-smtp/smtp-syntax.h + +2020-04-27 11:50:13 +0200 Stephan Bosch (2f205f294e) + + lib-smtp: smtp-params - Rename smtp_params_rcpt_equals() to + smtp_params_rcpt_equal(). + + +M src/lib-smtp/smtp-params.c +M src/lib-smtp/smtp-params.h +M src/lib-smtp/smtp-server-transaction.c + +2020-05-01 17:25:05 +0200 Stephan Bosch (a077472e58) + + lmpt: Reformat lmtp-proxy.c. + + +M src/lmtp/lmtp-proxy.c + +2020-05-01 17:24:47 +0200 Stephan Bosch (11b8a9512f) + + lmtp: Reformat lmtp-commands.c. + + +M src/lmtp/lmtp-commands.c + +2020-05-04 22:25:47 +0200 Stephan Bosch (55b083e48b) + + lmtp: Reformat lmtp-client.c. + + +M src/lmtp/lmtp-client.c + +2020-05-02 02:34:34 +0200 Stephan Bosch (210e9058ff) + + lib-smtp: Reformat smtp-client-connection.h. + + +M src/lib-smtp/smtp-client-connection.h + +2020-05-01 17:16:01 +0200 Stephan Bosch (45689522bf) + + lib-smtp: Reformat smtp-client-connection.c. + + +M src/lib-smtp/smtp-client-connection.c + +2020-05-19 19:11:34 +0300 Timo Sirainen (2507d5576a) + + lib-storage: mail_search_args_init() - Expand "*" in SEARCH_SEQSET + + This is now required by the IMAP MOVE code to correctly handle + "MOVE * folder". + +M src/lib-storage/mail-search.c +M src/lib-storage/mail-search.h + +2020-05-19 18:31:31 +0300 Timo Sirainen (6a378e6f55) + + imap: imap_search_seqset_iter_next() - Assert-crash if iteration doesn't + progress + + This can be done easily with seq_range_array_remove_seq_range(). This is + cleaner to use than invert+intersect. I originally didn't notice that this + function existed. + +M src/imap/imap-search-args.c + +2020-05-19 19:10:59 +0300 Timo Sirainen (947774f899) + + lib: Add unit test for seq_range_array_remove_range() + + +M src/lib/test-seq-range-array.c + +2020-05-18 12:01:44 +0300 Timo Sirainen (3c9a50165a) + + lib-storage: mail_search_args_init() - Fix converting UIDSET * to SEQSET on + empty mailbox + + The "*" caused seq=0 to be added to the seqset. This could have caused + unexpected issues. + + Fixes at least UID MOVE on empty mailbox: Panic: file seq-range-array.c: + line 471 (seq_range_array_invert): assertion failed: (range[0].seq1 >= + min_seq) + + Before 1a5d89d2bfa031903e88af9aff7eafc1b373d521 this assert-crash didn't + happen, but it went to infinite loop. + +M src/lib-storage/mail-search.c + +2020-04-11 19:19:41 +0200 Stephan Bosch (b8116a9c40) + + lib-imap-client: test-imapc-client - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 18:54:06 +0200 Stephan Bosch (e1c5779d82) + + lib-imap-client: test-imapc-client - Add server debug messages. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 13:44:45 +0200 Stephan Bosch (077e4752df) + + lib-imap-client: test-imapc-client - Split off test_run_server/client() from + test_run_client_server(). + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 12:28:25 +0200 Stephan Bosch (7de3f74782) + + lib-imap-client: test-imapc-client - Add log prefixes to distinguish client + and server debug messages. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 10:02:12 +0200 Stephan Bosch (2a3f08a3f8) + + lib-imap-client: test-imapc-client - Make sure the child server process is + killed. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 10:05:25 +0200 Stephan Bosch (1eeb829538) + + lib-imap-client: test-imapc-client - Use getopt() for parsing command line + arguments. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 10:00:32 +0200 Stephan Bosch (c93c1cdde3) + + lib-imap-client: test-imapc-client - Add structural comments. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 09:30:29 +0200 Stephan Bosch (ad73b51c0c) + + lib-imap-client: test-imapc-client - Move client functions. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-13 18:49:12 +0200 Stephan Bosch (dfe0bdb29f) + + lib-imap-client: test-imapc-client - Move server functions. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 09:27:30 +0200 Stephan Bosch (7af50c6dd4) + + lib-imap-client: test-imapc-client - Move test_open_server_fd(). + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 13:27:58 +0200 Stephan Bosch (c4e2843bb2) + + lib-imap-client: Reformat test-imapc-client.c. + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-12 11:51:31 +0300 Timo Sirainen (cf04833d7c) + + lib-imap-client: Remove unnecessary "Authentication failed: disconnected" + errors + + If connection failed during login, there were always two log lines logged. + The first line is enough. + +M src/lib-imap-client/imapc-connection.c +M src/lib-imap-client/test-imapc-client.c + +2020-04-12 11:34:14 +0300 Timo Sirainen (c91b90cccd) + + lib-imap-client: test-imapc-client - Client now sends LOGOUT and server + expects it + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-12 11:30:28 +0300 Timo Sirainen (b64215b17e) + + lib-imap-client: test-imapc-client - login_hangs: Client stopped too early + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-12 11:29:06 +0300 Timo Sirainen (e00a29ea4f) + + lib-imap-client: test-imapc-client - login_hangs: Server checked wrong + connection's input + + +M src/lib-imap-client/test-imapc-client.c + +2020-04-11 00:47:21 +0200 Stephan Bosch (e37370c0e1) + + master: test-master-login-auth - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/master/test-master-login-auth.c + +2020-04-11 13:51:49 +0200 Stephan Bosch (4f0b28f3fe) + + master: test-master-login-auth - Split off test_run_server/client() from + test_run_client_server(). + + +M src/master/test-master-login-auth.c + +2020-04-11 00:40:19 +0200 Stephan Bosch (d7251f0f6d) + + master: test-master-login-auth - Rename test_server_kill() to + test_servers_kill_forced(). + + +M src/master/test-master-login-auth.c + +2020-04-11 00:38:26 +0200 Stephan Bosch (b0692354a7) + + master: test-master-login-auth - Move global initialization to + main_init/deinit(). + + +M src/master/test-master-login-auth.c + +2020-04-11 00:32:25 +0200 Stephan Bosch (296c8cba36) + + master: test-master-login-auth - Avoid using sleep()/usleep(). + + +M src/master/test-master-login-auth.c + +2020-04-13 18:41:37 +0200 Stephan Bosch (5b2effd70c) + + master: test-master-login-auth - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/master/test-master-login-auth.c + +2020-04-11 00:29:42 +0200 Stephan Bosch (2de5a76c67) + + master: test-master-login-auth - Ignore SIGPIPE. + + +M src/master/test-master-login-auth.c + +2020-04-13 18:33:08 +0200 Stephan Bosch (e8af3c18a1) + + master: test-master-login-auth - Don't ignore SIGCHLD. + + +M src/master/test-master-login-auth.c + +2020-04-11 00:26:25 +0200 Stephan Bosch (6aaa25c6a0) + + master: test-master-login-auth - Add log prefixes to distinguish client and + server debug messages. + + +M src/master/test-master-login-auth.c + +2020-04-11 00:18:08 +0200 Stephan Bosch (de695e729b) + + master: test-auth-master - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/master/test-auth-master.c + +2020-04-11 00:11:09 +0200 Stephan Bosch (a66f5b0fb6) + + master: test-auth-master - Split off test_run_server/client() from + test_run_client_server(). + + +M src/master/test-auth-master.c + +2020-04-11 00:04:32 +0200 Stephan Bosch (af91b26444) + + master: test-auth-master - Rename test_server_kill() to + test_servers_kill_forced(). + + +M src/master/test-auth-master.c + +2020-04-11 00:02:17 +0200 Stephan Bosch (4d1c6c0a6e) + + master: test-auth-master - Move global initialization to main_init/deinit(). + + +M src/master/test-auth-master.c + +2020-04-10 23:56:56 +0200 Stephan Bosch (3408f38934) + + master: test-auth-master - Avoid using sleep()/usleep(). + + +M src/master/test-auth-master.c + +2020-04-13 18:39:56 +0200 Stephan Bosch (62d0a3410a) + + master: test-auth-master - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/master/test-auth-master.c + +2020-04-10 23:54:29 +0200 Stephan Bosch (9a80c1fe66) + + master: test-auth-master - Ignore SIGPIPE. + + +M src/master/test-auth-master.c + +2020-04-13 18:30:54 +0200 Stephan Bosch (0e4019e254) + + master: test-auth-master - Don't ignore SIGCHLD. + + +M src/master/test-auth-master.c + +2020-04-10 23:52:20 +0200 Stephan Bosch (b1e2a6537f) + + master: test-auth-master - Add log prefixes to distinguish client and server + debug messages. + + +M src/master/test-auth-master.c + +2020-04-10 23:43:07 +0200 Stephan Bosch (bb2da34c42) + + master: test-auth-client - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/master/test-auth-client.c + +2020-04-10 22:17:05 +0200 Stephan Bosch (1c40aa4946) + + master: test-auth-client - Split off test_run_server/client() from + test_run_client_server(). + + +M src/master/test-auth-client.c + +2020-04-10 22:07:48 +0200 Stephan Bosch (676a4ea66f) + + master: test-auth-client - Rename test_server_kill() to + test_servers_kill_forced(). + + +M src/master/test-auth-client.c + +2020-04-10 21:59:47 +0200 Stephan Bosch (dab562f599) + + master: test-auth-client - Move global initialization to main_init/deinit(). + + +M src/master/test-auth-client.c + +2020-04-10 21:53:06 +0200 Stephan Bosch (03c5dbbd4b) + + master: test-auth-client - Avoid using sleep()/usleep(). + + +M src/master/test-auth-client.c + +2020-04-13 18:37:55 +0200 Stephan Bosch (f1c60f48e7) + + master: test-auth-client - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/master/test-auth-client.c + +2020-04-10 21:50:16 +0200 Stephan Bosch (581b5c0bc0) + + master: test-auth-client - Ignore SIGPIPE. + + +M src/master/test-auth-client.c + +2020-04-13 18:28:19 +0200 Stephan Bosch (2819e392b8) + + master: test-auth-client - Don't ignore SIGCHLD. + + +M src/master/test-auth-client.c + +2020-04-10 21:48:11 +0200 Stephan Bosch (bd579b1023) + + master: test-auth-client - Add log prefixes to distinguish client and server + debug messages. + + +M src/master/test-auth-client.c + +2020-04-11 12:58:10 +0200 Stephan Bosch (205f5cbf7b) + + master: Reformat test-master-login-auth.c. + + +M src/master/test-master-login-auth.c + +2020-04-11 12:53:40 +0200 Stephan Bosch (b4ee4d3cdc) + + master: Reformat test-auth-master.c. + + +M src/master/test-auth-master.c + +2020-04-11 12:42:58 +0200 Stephan Bosch (6e4d82c689) + + master: Reformat test-auth-client.c. + + +M src/master/test-auth-client.c + +2020-05-14 16:05:00 +0200 Stephan Bosch (0890ee4883) + + lib-smtp: test-smtp-submit - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 16:47:45 +0200 Stephan Bosch (aba5f64eed) + + lib-smtp: test-smtp-submit - Split off test_run_server/client() from + test_run_client_server(). + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 11:05:10 +0200 Stephan Bosch (990e820062) + + lib-smtp: test-smtp-submit - Rename test_servers_kill_all() to + test_servers_kill_forced(). + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 10:53:40 +0200 Stephan Bosch (7c9599e3dc) + + lib-smtp: test-smtp-submit - Move global initialization to + main_init/deinit(). + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 10:56:07 +0200 Stephan Bosch (1dc769d5bb) + + lib-smtp: test-smtp-submit - Avoid using sleep(). + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-13 17:52:09 +0200 Stephan Bosch (96f1ef1504) + + lib-smtp: test-smtp-submit - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 10:40:23 +0200 Stephan Bosch (a1669c00ae) + + lib-smtp: test-smtp-submit - Ignore SIGPIPE. + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-13 17:45:55 +0200 Stephan Bosch (9cb98b69cc) + + lib-smtp: test-smtp-submit - Don't ignore SIGCHLD. + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 10:37:28 +0200 Stephan Bosch (945ce4e152) + + lib-smtp: test-smtp-submit - Add log prefixes to distinguish client and + server debug messages. + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 00:57:15 +0200 Stephan Bosch (856440da77) + + lib-smtp: test-smtp-server-errors - Use the new sub-process test API. + + This makes an effort to terminate client processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 00:30:11 +0200 Stephan Bosch (99f3dc5ae2) + + lib-smtp: test-smtp-server-errors - Split off test_run_client/server() from + test_run_client_server(). + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 00:23:46 +0200 Stephan Bosch (f37980b708) + + lib-smtp: test-smtp-server-errors - Rename test_clients_kill_all() to + test_clients_kill_forced(). + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 10:50:03 +0200 Stephan Bosch (eb954e32b1) + + lib-smtp: test-smtp-server-errors - Move global initialization to + main_init/deinit(). + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 00:18:32 +0200 Stephan Bosch (fe2c2c6b4b) + + lib-smtp: test-smtp-server-errors - Fix name of client_connection_deinit(). + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-13 15:40:23 +0200 Stephan Bosch (7afecadf1e) + + lib-smtp: test-smtp-server-errors - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 00:16:54 +0200 Stephan Bosch (ecf3cca0f0) + + lib-smtp: test-smtp-server-errors - Ignore SIGPIPE. + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-13 15:15:34 +0200 Stephan Bosch (6b5e76662d) + + lib-smtp: test-smtp-server-errors - Remove useless child signal handler. + + Restructure code to better match equivalent unit tests. + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 00:15:24 +0200 Stephan Bosch (cf5d484a5e) + + lib-smtp: test-smtp-server-errors - Adjust log prefix code to match other + similar unit tests. + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-08 23:49:31 +0200 Stephan Bosch (6e29b58293) + + lib-smtp: test-smtp-client-errors - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 22:37:59 +0200 Stephan Bosch (fc19d780fd) + + lib-smtp: test-smtp-client-errors - Split off test_run_server/dns/client() + from test_run_client_server(). + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 22:27:46 +0200 Stephan Bosch (ac4ce94d6c) + + lib-smtp: test-smtp-client-errors - Rename test_servers_kill_all() to + test_servers_kill_forced(). + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 22:24:47 +0200 Stephan Bosch (74afe6d2a6) + + lib-smtp: test-smtp-client-errors - Move global initialization to + main_init/deinit(). + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 21:10:08 +0200 Stephan Bosch (d82f9ec0b1) + + lib-smtp: test-smtp-client-errors - Avoid using sleep(). + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-13 14:18:05 +0200 Stephan Bosch (a9c1ea5fa1) + + lib-smtp: test-smtp-client-errors - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 21:04:32 +0200 Stephan Bosch (462d42a287) + + lib-smtp: test-smtp-client-errors - Generally ignore SIGPIPE. + + Remove per-process code that achieves the same. + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-13 14:12:25 +0200 Stephan Bosch (950da3273d) + + lib-smtp: test-smtp-client-errors - Don't ignore SIGCHLD. + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-13 14:44:31 +0200 Stephan Bosch (74c1251a60) + + lib-smtp: test-smtp-client-errors - Turn server-side payload read error into + a debug message. + + This can readily occur during tests and must not issue a real error message. + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-08 21:02:18 +0200 Stephan Bosch (735b90a5e5) + + lib-smtp: test-smtp-client-errors - Add log prefixes to distinguish client + and server debug messages. + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-05 02:40:33 +0200 Stephan Bosch (3343d5e11a) + + lib-smtp: test-smtp-payload - Use the new sub-process test API. + + This makes an effort to terminate server processes gracefully. Killing them + bluntly hampers test coverage measurement and valgrind testing. + +M src/lib-smtp/test-smtp-payload.c + +2020-04-08 00:04:05 +0200 Stephan Bosch (08fefcfffc) + + lib-smtp: test-smtp-payload - Split off test_run_client/server() from + test_run_client_server(). + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-07 23:48:44 +0200 Stephan Bosch (3f02f6ea98) + + lib-smtp: test-smtp-payload - Adjust log prefix code to match other similar + unit tests. + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-05 02:34:29 +0200 Stephan Bosch (81be5e7e6b) + + lib-smtp: test-smtp-payload - Rename test_server_kill() to + test_server_kill_forced(). + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-05 02:32:48 +0200 Stephan Bosch (671854cfc0) + + lib-smtp: test-smtp-payload - Move global initialization to + main_init/deinit(). + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-05 02:25:30 +0200 Stephan Bosch (0fa20bd854) + + lib-smtp: test-smtp-payload - Call test_files_init/deinit() in + test_run_client_server(). + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-13 13:28:51 +0200 Stephan Bosch (75305000aa) + + lib-smtp: test-smtp-payload - Use lib-signals API. + + Using signal() is not portable for installing a signal handler. + +M src/lib-smtp/test-smtp-payload.c + +2020-04-13 13:26:04 +0200 Stephan Bosch (04097a659f) + + lib-smtp: test-smtp-payload - Properly exit child process. + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-13 13:23:15 +0200 Stephan Bosch (13d7680f2e) + + lib-smtp: test-smtp-payload - Don't ignore SIGCHLD. + + +M src/lib-smtp/test-smtp-payload.c + +2020-04-10 17:30:51 +0200 Stephan Bosch (eebbe6f4b1) + + lib-master: master-service - Add master_service_deinit_forked(). + + +M src/lib-master/master-service.c +M src/lib-master/master-service.h + +2020-05-25 17:16:30 +0200 Stephan Bosch (7fa64eb166) + + lib-smtp: test-smtp-server-errors - Fix "many bad commands" test. + + It didn't properly handle the two parallel connections. Removed a useless + context struct definition. Modified debug message for easier debugging. + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-09 01:33:22 +0200 Stephan Bosch (3c00c3590b) + + lib-smtp: Reformat test-smtp-submit.c. + + +M src/lib-smtp/test-smtp-submit.c + +2020-04-09 00:07:36 +0200 Stephan Bosch (f22c6c3006) + + lib-smtp: Reformat test-smtp-server-errors.c. + + +M src/lib-smtp/test-smtp-server-errors.c + +2020-04-08 22:05:57 +0200 Stephan Bosch (10667b6a9d) + + lib-smtp: Reformat test-smtp-client-errors.c. + + +M src/lib-smtp/test-smtp-client-errors.c + +2020-04-05 02:22:50 +0200 Stephan Bosch (c8e707ebeb) + + lib-smtp: Reformat test-smtp-payload.c. + + +M src/lib-smtp/test-smtp-payload.c + +2020-05-23 00:36:48 +0200 Stephan Bosch (647188820e) + + lib-program-client: test-program-client-local - Add test for running client + without I/O or timeouts. + + +M src/lib-program-client/test-program-client-local.c + +2019-02-21 02:37:41 +0100 Stephan Bosch (be38004f75) + + lib: child-wait - Mark the SIGCHLD handler as expected when waiting for + child. + + This alows waiting for a child to be the only activity on the ioloop. + +M src/lib/child-wait.c + +2019-02-21 02:34:54 +0100 Stephan Bosch (d39b532db5) + + lib: lib-signals - Implement lib_signals_set_expected(). + + This is a promise that the indicated delayed signal will occur eventually, + so that the associated ioloop will eventually terminate. This allows the + lib-signal io to be alone on the ioloop. + +M src/lib/lib-signals.c +M src/lib/lib-signals.h + +2019-02-21 02:40:36 +0100 Stephan Bosch (349029952a) + + lib-program-client: program-client-local - Restructure + program_client_local_disconnect(). + + Simplify the handling of the program timeout and improve the debug messages. + +M src/lib-program-client/program-client-local.c + +2020-05-13 15:04:45 +0300 Timo Sirainen (9bab1a7ef7) + + login-proxy: Add proxy_host_immediate_failure_after=